コード例 #1
0
        /// <summary>
        /// Authorize a request token
        /// </summary>
        /// <param name="oauthToken">The request token</param>
        /// <returns>An object containing a response elements (verifier code and granted)</returns>
        private TokenVerification InlineAuthorize(IOAuthToken oauthToken)
        {
            TokenVerification retVal = null;

            if (oauthToken != null)
            {
                RestClient  restClient = new RestClient(this.OAuthEndpoints.ServiceUri);
                RestRequest request    = new RestRequest(this.OAuthEndpoints.AuthorizationUri, Method.GET);
                request.AddParameter(Constants.TokenParameter, oauthToken.Token);
                var response = restClient.Execute(request);

                var    qs                     = HttpUtility.ParseQueryString(response.Content);
                string verifierCode           = qs[Constants.VerifierCodeParameter];
                string grantedAccessParameter = qs[Constants.GrantedAccessParameter];

                bool grantedAccess = false;
                if (!string.IsNullOrWhiteSpace(grantedAccessParameter))
                {
                    grantedAccess = bool.Parse(grantedAccessParameter);
                }

                if (!string.IsNullOrEmpty(verifierCode))
                {
                    retVal = new TokenVerification();
                    retVal.VerifierCode = verifierCode;
                    retVal.Granted      = grantedAccess;
                }
            }

            return(retVal);
        }
コード例 #2
0
        /// <summary>
        /// Get an access token without using a callback url.  This only works for the auto grant path.(which is only enabled for Vistaprint users
        /// </summary>
        /// <param name="realm"></param>
        /// <returns>An access token and secret</returns>
        public IOAuthToken GetInlineAccessToken(Realm realm)
        {
            DefaultOAuthToken retVal = null;

            DefaultOAuthToken requestToken = this.GetRequestToken(realm, Constants.InlineCallback) as DefaultOAuthToken;

            if (requestToken != null && requestToken.IsValid())
            {
                TokenVerification tokenVerification = this.InlineAuthorize(requestToken);

                if (tokenVerification != null)
                {
                    retVal = this.ExchangeRequestTokenForAccessToken(requestToken, tokenVerification.VerifierCode) as DefaultOAuthToken;
                }
            }

            return(retVal);
        }