/// <summary> /// /// </summary> /// <returns></returns> public OAuth1AuthorizeInfo GetAuthorizeInfo() { String url = this.RequestTokenUrl; var cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret, "", "", HttpMethodName.Post); SignatureInfo si = OAuth1Client.GenerateSignature(new Uri(url), cm, OAuthSignatureTypes.HMACSHA1); HttpRequestCommand command = this.CreateHttpRequestCommand(HttpMethodName.Post, url, "", ""); String bodyText = this.GetBodyText(command); //正規表現でoauth_token,oauth_token_secret取得 return(OAuth1AuthorizeInfo.Create(this.AuthorizeUrl, bodyText)); }
/// <summary> /// /// </summary> /// <param name="authorizeInfo"></param> /// <param name="oauthVerifier"></param> /// <returns></returns> public OAuth1AccessToken GetAccessToken(OAuth1AuthorizeInfo authorizeInfo, String oauthVerifier) { var ai = authorizeInfo; var cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret , ai.RequestToken, ai.RequestTokenSecret, HttpMethodName.Post); var si = OAuth1Client.GenerateSignature(new Uri(this.AccessTokenUrl), cm, OAuthSignatureTypes.HMACSHA1); HttpRequestCommand command = new HttpRequestCommand(String.Format("{0}?{1}&oauth_verifier={2}&oauth_signature={3}" , this.AccessTokenUrl, si.NormalizedRequestParameters, oauthVerifier, si.Signature), HttpMethodName.Post); var res = this.GetResponse(command); return(OAuth1AccessToken.Create(res.BodyText)); }
/// <summary> /// /// </summary> /// <param name="requestToken"></param> /// <param name="requestTokenSecret"></param> /// <returns></returns> public OAuth1AccessToken GetAccessToken(String requestToken, String requestTokenSecret) { String url = this.AccessTokenUrl; GetRequestTokenCommand cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret , requestToken, requestTokenSecret, HttpMethodName.Post); SignatureInfo si = OAuth1Client.GenerateSignature(new Uri(url), cm, OAuthSignatureTypes.HMACSHA1); HttpRequestCommand command = new HttpRequestCommand(String.Format("{0}?{1}&oauth_signature={2}", url, si.NormalizedRequestParameters, si.Signature), HttpMethodName.Post); var res = this.GetResponse(command); return(OAuth1AccessToken.Create(res.BodyText)); }
/// <summary> /// /// </summary> /// <returns></returns> public OAuth1AuthorizeInfo GetAuthorizeInfo() { String url = this.RequestTokenUrl; var cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret, "", "", HttpMethodName.Post); SignatureInfo si = OAuth1Client.GenerateSignature(new Uri(url), cm, OAuthSignatureTypes.HMACSHA1); HttpRequestCommand command = new HttpRequestCommand(String.Format("{0}?{1}&oauth_signature={2}", url, si.NormalizedRequestParameters, si.Signature), HttpMethodName.Post); String bodyText = this.GetBodyText(command); //正規表現でoauth_token,oauth_token_secret取得 return(OAuth1AuthorizeInfo.Create(this.AuthorizeUrl, bodyText)); }
private HttpRequestCommand CreateHttpClientRequestHeaderMode(HttpMethodName methodName, String url, String token, String tokenSecret, IDictionary <String, String> queryString) { var cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret, token, tokenSecret, methodName); Dictionary <String, String> pp = OAuth1Client.GenerateParameters(cm); var u = new Uri(HttpClient.CreateQueryString(url, queryString, OAuth1Client.UrlEncode)); SignatureInfo si = GenerateSignature(u, cm); pp.Add("oauth_signature", OAuth1Client.UrlEncode(si.Signature)); HttpRequestCommand cl = new HttpRequestCommand(HttpClient.CreateQueryString(url, queryString, HttpClient.UrlEncode)); cl.MethodName = methodName; cl.Headers[HttpRequestHeader.Authorization] = this.CreateOAuthHeader(pp); return(cl); }
private HttpRequestCommand CreateHttpClientQueryStringMode(HttpMethodName methodName, String url, String token, String tokenSecret, IDictionary <String, String> queryString) { var cm = new GetRequestTokenCommand(this.ConsumerKey, this.ConsumerSecret, token, tokenSecret, methodName); Dictionary <String, String> pp = OAuth1Client.GenerateParameters(cm); foreach (var p in queryString) { pp.Add(p.Key, p.Value); } var u = new Uri(HttpClient.CreateQueryString(url, pp, OAuth1Client.UrlEncode)); SignatureInfo si = GenerateSignature(u, cm); pp.Add("oauth_signature", OAuth1Client.UrlEncode(si.Signature)); HttpRequestCommand cl = new HttpRequestCommand(HttpClient.CreateQueryString(url, pp, HttpClient.UrlEncode)); cl.MethodName = methodName; return(cl); }
/// <summary> /// /// </summary> /// <param name="consumerKey"></param> /// <param name="consumerKeySecret"></param> /// <param name="token"></param> /// <param name="tokenSecret"></param> /// <param name="methodName"></param> public GetRequestTokenCommand(String consumerKey, String consumerKeySecret, String token, String tokenSecret , HttpMethodName methodName) { if (String.IsNullOrEmpty(consumerKey) == true) { throw new ArgumentNullException("consumerKey"); } this.ConsumerKey = consumerKey; this.ConsumerKeySecret = consumerKeySecret; this.Token = token; this.TokenSecret = tokenSecret; this.MethodName = methodName; this.Nonce = OAuth1Client.GenerateNonce(); this.TimeStamp = OAuth1Client.GenerateTimeStamp(); if (this.Token == null) { this.Token = String.Empty; } }
/// <summary> /// /// </summary> /// <param name="url"></param> /// <param name="command"></param> /// <param name="signatureType"></param> /// <returns></returns> public static SignatureInfo GenerateSignatureBase(Uri url, GetRequestTokenCommand command, String signatureType) { SignatureInfo si = new SignatureInfo(); var cm = command; if (String.IsNullOrEmpty(signatureType)) { throw new ArgumentNullException("signatureType"); } List <KeyValuePair <String, String> > parameters = OAuth1Client.GetQueryParameters(url.Query); parameters.Add(new KeyValuePair <String, String>(Key.OAuthVersion, Key.OAuthVersionNo)); parameters.Add(new KeyValuePair <String, String>(Key.OAuthNonce, cm.Nonce)); parameters.Add(new KeyValuePair <String, String>(Key.OAuthTimestamp, cm.TimeStamp)); parameters.Add(new KeyValuePair <String, String>(Key.OAuthSignatureMethod, signatureType)); parameters.Add(new KeyValuePair <String, String>(Key.OAuthConsumerKey, cm.ConsumerKey)); if (!String.IsNullOrEmpty(cm.Token)) { parameters.Add(new KeyValuePair <String, String>(Key.OAuthToken, cm.Token)); } parameters.Sort(CompareQueryString); si.NormalizedUrl = String.Format("{0}://{1}", url.Scheme, url.Host); if (!((url.Scheme == "http" && url.Port == 80) || (url.Scheme == "https" && url.Port == 443))) { si.NormalizedUrl += ":" + url.Port; } si.NormalizedUrl += url.AbsolutePath; si.NormalizedRequestParameters = NormalizeRequestParameters(parameters); StringBuilder sb = new StringBuilder(1000); sb.AppendFormat("{0}&", cm.MethodName.ToString().ToUpper()); sb.AppendFormat("{0}&", OAuth1Client.UrlEncode(si.NormalizedUrl)); sb.AppendFormat("{0}", OAuth1Client.UrlEncode(si.NormalizedRequestParameters)); si.Signature = sb.ToString(); return(si); }
/// <summary> /// /// </summary> /// <param name="url"></param> /// <param name="command"></param> /// <param name="signatureType"></param> /// <returns></returns> public static SignatureInfo GenerateSignature(Uri url, GetRequestTokenCommand command, OAuthSignatureTypes signatureType) { var cm = command; SignatureInfo si = new SignatureInfo(); switch (signatureType) { case OAuthSignatureTypes.PLAINTEXT: si.Signature = OAuth1Client.UrlEncode(String.Format("{0}&{1}", cm.ConsumerKeySecret, cm.TokenSecret)); return(si); case OAuthSignatureTypes.HMACSHA1: si = GenerateSignatureBase(url, cm, Key.HMACSHA1SignatureType); String key = String.Format("{0}&{1}" , OAuth1Client.UrlEncode(cm.ConsumerKeySecret), String.IsNullOrEmpty(cm.TokenSecret) ? "" : OAuth1Client.UrlEncode(cm.TokenSecret)); si.Signature = GenerateSignatureUsingHash(key, si.Signature); return(si); case OAuthSignatureTypes.RSASHA1: throw new NotImplementedException(); } throw new ArgumentException("Unknown signature type", "signatureType"); }