public bool Login() { var token = Globals.Instance.TwitterToken; var secret = Globals.Instance.TwitterSecret; if (string.IsNullOrWhiteSpace(token) || string.IsNullOrWhiteSpace(secret)) { this.OAuth = new OAuth(Consumer_Key, Consumer_Secret); return false; } else { this.OAuth = new OAuth(Consumer_Key, Consumer_Secret, token, secret); return true; } }
public WebRequest MakeRequest(string method, string url, object data = null) { method = method.ToUpper(); var uri = new Uri(url); var dic = new SortedDictionary <string, object>(); if (!string.IsNullOrWhiteSpace(uri.Query)) { OAuth.AddDictionary(dic, uri.Query); } if (data != null) { OAuth.AddDictionary(dic, data); } if (!string.IsNullOrWhiteSpace(this.User.Token)) { dic.Add("oauth_token", UrlEncode(this.User.Token)); } dic.Add("oauth_consumer_key", UrlEncode(this.App.Token)); dic.Add("oauth_nonce", OAuth.GetNonce()); dic.Add("oauth_timestamp", OAuth.GetTimeStamp()); dic.Add("oauth_signature_method", "HMAC-SHA1"); dic.Add("oauth_version", "1.0"); var hashKey = string.Format( "{0}&{1}", UrlEncode(this.App.Secret), this.User.Secret == null ? null : UrlEncode(this.User.Secret)); var hashData = string.Format( "{0}&{1}&{2}", method.ToUpper(), UrlEncode(string.Format("{0}{1}{2}{3}", uri.Scheme, Uri.SchemeDelimiter, uri.Host, uri.AbsolutePath)), UrlEncode(OAuth.ToString(dic))); using (var hash = new HMACSHA1(Encoding.UTF8.GetBytes(hashKey))) dic.Add("oauth_signature", UrlEncode(Convert.ToBase64String(hash.ComputeHash(Encoding.UTF8.GetBytes(hashData))))); var sbData = new StringBuilder(); sbData.Append("OAuth "); foreach (var st in dic) { if (Array.IndexOf <string>(oauth_array, st.Key) >= 0) { sbData.AppendFormat("{0}=\"{1}\",", st.Key, Convert.ToString(st.Value)); } } sbData.Remove(sbData.Length - 1, 1); var str = sbData.ToString(); var req = (HttpWebRequest)WebRequest.Create(uri); req.Method = method; req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; req.UserAgent = "Decchi"; req.Headers.Add("Authorization", sbData.ToString()); if (method == "POST") { req.ContentType = "application/x-www-form-urlencoded"; } return(req); }