RestSharp.Authenticators.OAuth.OAuthWorkflow.BuildClientAuthAccessTokenInfo C# (CSharp) 메소드

BuildClientAuthAccessTokenInfo() 공개 메소드

Generates a OAuthWebQueryInfo instance to pass to an IAuthenticator for the purpose of exchanging user credentials for an access token authorized by the user at the Service Provider site.
public BuildClientAuthAccessTokenInfo ( string method, WebParameterCollection parameters ) : OAuthWebQueryInfo
method string The HTTP method for the intended request
parameters WebParameterCollection Any existing, non-OAuth query parameters desired in the request
리턴 OAuthWebQueryInfo
        public virtual OAuthWebQueryInfo BuildClientAuthAccessTokenInfo(string method, WebParameterCollection parameters)
        {
            ValidateClientAuthAccessRequestState();

            if (parameters == null)
            {
                parameters = new WebParameterCollection();
            }

            var uri = new Uri(AccessTokenUrl);
            var timestamp = OAuthTools.GetTimestamp();
            var nonce = OAuthTools.GetNonce();

            AddXAuthParameters(parameters, timestamp, nonce);

            var signatureBase = OAuthTools.ConcatenateRequestElements(method, uri.ToString(), parameters);
            var signature = OAuthTools.GetSignature(SignatureMethod, SignatureTreatment, signatureBase, ConsumerSecret);

            var info = new OAuthWebQueryInfo
            {
                WebMethod = method,
                ParameterHandling = ParameterHandling,
                ClientMode = "client_auth",
                ClientUsername = ClientUsername,
                ClientPassword = ClientPassword,
                ConsumerKey = ConsumerKey,
                SignatureMethod = SignatureMethod.ToRequestValue(),
                SignatureTreatment = SignatureTreatment,
                Signature = signature,
                Timestamp = timestamp,
                Nonce = nonce,
                Version = Version ?? "1.0",
                TokenSecret = TokenSecret,
                ConsumerSecret = ConsumerSecret
            };

            return info;
        }

Usage Example

예제 #1
0
        private void AddOAuthData(IRestClient client, IRestRequest request, OAuthWorkflow workflow)
        {
            var url = client.BuildUri(request).ToString();

            OAuthWebQueryInfo oauth;
            var method = request.Method.ToString().ToUpperInvariant();

            var parameters = new WebParameterCollection();

            // for non-GET style requests make sure params are part of oauth signature
            if (request.Method != Method.GET && request.Method != Method.DELETE)
            {
                foreach (var p in request.Parameters.Where(p => p.Type == ParameterType.GetOrPost))
                {
                    parameters.Add(new WebPair(p.Name, p.Value.ToString()));
                }
            }

            switch (Type)
            {
                case OAuthType.RequestToken:
                    workflow.RequestTokenUrl = url;
                    oauth = workflow.BuildRequestTokenInfo(method, parameters);
                    break;
                case OAuthType.AccessToken:
                    workflow.AccessTokenUrl = url;
                    oauth = workflow.BuildAccessTokenInfo(method, parameters);
                    break;
                case OAuthType.ClientAuthentication:
                    workflow.AccessTokenUrl = url;
                    oauth = workflow.BuildClientAuthAccessTokenInfo(method, parameters);
                    break;
                case OAuthType.ProtectedResource:
                    oauth = workflow.BuildProtectedResourceInfo(method, parameters, url);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            switch (ParameterHandling)
            {
                case OAuthParameterHandling.HttpAuthorizationHeader:
                    parameters.Add("oauth_signature", oauth.Signature);
                    request.AddHeader("Authorization", GetAuthorizationHeader(parameters));
                    break;
                case OAuthParameterHandling.UrlOrPostParameters:
                    parameters.Add("oauth_signature", HttpUtility.UrlDecode(oauth.Signature));
                    foreach (var parameter in parameters)
                    {
                        request.AddParameter(parameter.Name, parameter.Value);
                    }
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }
All Usage Examples Of RestSharp.Authenticators.OAuth.OAuthWorkflow::BuildClientAuthAccessTokenInfo