Пример #1
0
        public OAuthParameters BuildProtectedResourceSignature(string method, WebPairCollection parameters, string url)
        {
            ValidateProtectedResourceState();

            var allParameters = new WebPairCollection();

            allParameters.AddRange(parameters);

            // Include url parameters in query pool
            var uri           = new Uri(url);
            var urlParameters = HttpUtility.ParseQueryString(uri.Query);

            allParameters.AddRange(urlParameters.AllKeys.Select(x => new WebPair(x, urlParameters[x])));

            var timestamp = OAuthTools.GetTimestamp();
            var nonce     = OAuthTools.GetNonce();

            var authParameters = GenerateAuthParameters(timestamp, nonce);

            allParameters.AddRange(authParameters);

            var signatureBase = OAuthTools.ConcatenateRequestElements(method, url, allParameters);

            return(new OAuthParameters
            {
                Signature = OAuthTools.GetSignature(SignatureMethod, SignatureTreatment, signatureBase, ConsumerSecret, TokenSecret),
                Parameters = authParameters
            });
        }
Пример #2
0
        /// <summary>
        /// Generates an OAuth signature to pass to an
        /// <see cref="IAuthenticator" /> for the purpose of requesting an
        /// unauthorized request token.
        /// </summary>
        /// <param name="method">The HTTP method for the intended request</param>
        /// <param name="parameters">Any existing, non-OAuth query parameters desired in the request</param>
        /// <returns></returns>
        public OAuthParameters BuildRequestTokenInfo(string method, WebPairCollection parameters)
        {
            ValidateTokenRequestState();

            var allParameters = new WebPairCollection();

            allParameters.AddRange(parameters);

            var timestamp = OAuthTools.GetTimestamp();
            var nonce     = OAuthTools.GetNonce();

            var authParameters = GenerateAuthParameters(timestamp, nonce);

            allParameters.AddRange(authParameters);

            var signatureBase = OAuthTools.ConcatenateRequestElements(method, RequestTokenUrl, allParameters);

            return(new OAuthParameters
            {
                Signature = OAuthTools.GetSignature(SignatureMethod, SignatureTreatment, signatureBase, ConsumerSecret),
                Parameters = authParameters
            });
        }
Пример #3
0
        /// <summary>
        /// Generates an OAuth signature to pass to an
        /// <see cref="IAuthenticator" /> for the purpose of exchanging user credentials
        /// for an access token authorized by the user at the Service Provider site.
        /// </summary>
        /// <param name="method">The HTTP method for the intended request</param>
        /// <param name="parameters">Any existing, non-OAuth query parameters desired in the request</param>
        public OAuthParameters BuildClientAuthAccessTokenSignature(string method, WebPairCollection parameters)
        {
            ValidateClientAuthAccessRequestState();

            var allParameters = new WebPairCollection();

            allParameters.AddRange(parameters);

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

            var authParameters = GenerateXAuthParameters(timestamp, nonce);

            allParameters.AddRange(authParameters);

            var signatureBase = OAuthTools.ConcatenateRequestElements(method, uri.ToString(), allParameters);

            return(new OAuthParameters
            {
                Signature = OAuthTools.GetSignature(SignatureMethod, SignatureTreatment, signatureBase, ConsumerSecret),
                Parameters = authParameters
            });
        }