コード例 #1
0
        public string GenerateSignature(Uri url, string consumerKey, string consumerSecret, string token, string tokenSecret, string callBackUrl, string oauthVerifier, string httpMethod, string timeStamp, string nonce, TwitterBase.SignatureTypes signatureType, out string normalizedUrl, out string normalizedRequestParameters)
        {
            string str;

            normalizedUrl = null;
            normalizedRequestParameters = null;
            switch (signatureType)
            {
            case TwitterBase.SignatureTypes.HMACSHA1: {
                string   str1     = this.GenerateSignatureBase(url, consumerKey, token, tokenSecret, callBackUrl, oauthVerifier, httpMethod, timeStamp, nonce, "HMAC-SHA1", out normalizedUrl, out normalizedRequestParameters);
                HMACSHA1 hMACSHA1 = new HMACSHA1()
                {
                    Key = Encoding.ASCII.GetBytes(string.Format("{0}&{1}", TwitterBase.UrlEncode(consumerSecret), (string.IsNullOrEmpty(tokenSecret) ? string.Empty : TwitterBase.UrlEncode(tokenSecret))))
                };
                str = this.GenerateSignatureUsingHash(str1, hMACSHA1);
                break;
            }

            case TwitterBase.SignatureTypes.PLAINTEXT: {
                str = HttpUtility.UrlEncode(string.Format("{0}&{1}", consumerSecret, tokenSecret));
                break;
            }

            case TwitterBase.SignatureTypes.RSASHA1: {
                throw new NotImplementedException();
            }

            default: {
                throw new ArgumentException("Unknown signature type", "signatureType");
            }
            }
            return(str);
        }
コード例 #2
0
        public string OAuthWebRequest(TwitterAuth.Method method, string url, string postData)
        {
            string empty  = string.Empty;
            string str    = string.Empty;
            string empty1 = string.Empty;

            if ((method == TwitterAuth.Method.POST || method == TwitterAuth.Method.DELETE ? true : method == TwitterAuth.Method.GET))
            {
                if (postData.Length > 0)
                {
                    NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(postData);
                    postData = string.Empty;
                    string[] allKeys = nameValueCollection.AllKeys;
                    for (int i = 0; i < (int)allKeys.Length; i++)
                    {
                        string str1 = allKeys[i];
                        if (postData.Length > 0)
                        {
                            postData = string.Concat(postData, "&");
                        }
                        nameValueCollection[str1] = HttpUtility.UrlDecode(nameValueCollection[str1]);
                        nameValueCollection[str1] = TwitterBase.UrlEncode(nameValueCollection[str1]);
                        postData = string.Concat(postData, str1, "=", nameValueCollection[str1]);
                    }
                    if (url.IndexOf("?") <= 0)
                    {
                        url = string.Concat(url, "?");
                    }
                    else
                    {
                        url = string.Concat(url, "&");
                    }
                    url = string.Concat(url, postData);
                }
            }
            Uri    uri  = new Uri(url);
            string str2 = this.GenerateNonce();
            string str3 = this.GenerateTimeStamp();
            string str4 = base.GenerateSignature(uri, this.ConsumerKey, this.ConsumerSecret, this.Token, this.TokenSecret, this.CallBackUrl, this.OAuthVerifier, method.ToString(), str3, str2, out empty, out str);

            str = string.Concat(str, "&oauth_signature=", TwitterBase.UrlEncode(str4));
            if ((method == TwitterAuth.Method.POST ? true : method == TwitterAuth.Method.DELETE))
            {
                postData = str;
                str      = string.Empty;
            }
            if (str.Length > 0)
            {
                empty = string.Concat(empty, "?");
            }
            empty1 = this.WebRequest(method, string.Concat(empty, str), postData);
            return(empty1);
        }
コード例 #3
0
        public string GenerateSignatureBase(Uri url, string consumerKey, string token, string tokenSecret, string callBackUrl, string oauthVerifier, string httpMethod, string timeStamp, string nonce, string signatureType, out string normalizedUrl, out string normalizedRequestParameters)
        {
            bool flag;

            if (token == null)
            {
                token = string.Empty;
            }
            if (tokenSecret == null)
            {
                tokenSecret = string.Empty;
            }
            if (string.IsNullOrEmpty(consumerKey))
            {
                throw new ArgumentNullException("consumerKey");
            }
            if (string.IsNullOrEmpty(httpMethod))
            {
                throw new ArgumentNullException("httpMethod");
            }
            if (string.IsNullOrEmpty(signatureType))
            {
                throw new ArgumentNullException("signatureType");
            }
            normalizedUrl = null;
            normalizedRequestParameters = null;
            List <TwitterBase.QueryParameter> queryParameters = this.GetQueryParameters(url.Query);

            queryParameters.Add(new TwitterBase.QueryParameter("oauth_version", "1.0"));
            queryParameters.Add(new TwitterBase.QueryParameter("oauth_nonce", nonce));
            queryParameters.Add(new TwitterBase.QueryParameter("oauth_timestamp", timeStamp));
            queryParameters.Add(new TwitterBase.QueryParameter("oauth_signature_method", signatureType));
            queryParameters.Add(new TwitterBase.QueryParameter("oauth_consumer_key", consumerKey));
            if (!string.IsNullOrEmpty(callBackUrl))
            {
                queryParameters.Add(new TwitterBase.QueryParameter("oauth_callback", TwitterBase.UrlEncode(callBackUrl)));
            }
            if (!string.IsNullOrEmpty(oauthVerifier))
            {
                queryParameters.Add(new TwitterBase.QueryParameter("oauth_verifier", oauthVerifier));
            }
            if (!string.IsNullOrEmpty(token))
            {
                queryParameters.Add(new TwitterBase.QueryParameter("oauth_token", token));
            }
            queryParameters.Sort(new TwitterBase.QueryParameterComparer());
            normalizedUrl = string.Format("{0}://{1}", url.Scheme, url.Host);
            if (!(url.Scheme == "http") || url.Port != 80)
            {
                flag = (url.Scheme != "https" ? false : url.Port == 443);
            }
            else
            {
                flag = true;
            }
            if (!flag)
            {
                normalizedUrl = string.Concat(normalizedUrl, ":", url.Port);
            }
            normalizedUrl = string.Concat(normalizedUrl, url.AbsolutePath);
            normalizedRequestParameters = this.NormalizeRequestParameters(queryParameters);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("{0}&", httpMethod.ToUpper());
            stringBuilder.AppendFormat("{0}&", TwitterBase.UrlEncode(normalizedUrl));
            stringBuilder.AppendFormat("{0}", TwitterBase.UrlEncode(normalizedRequestParameters));
            return(stringBuilder.ToString());
        }
コード例 #4
0
        public void Tweet(string content)
        {
            string      empty       = string.Empty;
            string      str         = string.Empty;
            TwitterAuth twitterAuth = new TwitterAuth(TwitterConnect.API_Key, TwitterConnect.API_Secret, this.CallBackUrl);

            if ((this.OAuthToken == null ? false : this.OAuthTokenSecret != null))
            {
                twitterAuth.TokenSecret   = this.OAuthToken;
                twitterAuth.Token         = this.OAuthTokenSecret;
                twitterAuth.OAuthVerifier = HttpContext.Current.Request.QueryString["oauth_verifier"];
            }
            else
            {
                twitterAuth.AccessTokenGet(HttpContext.Current.Request.QueryString["oauth_token"], HttpContext.Current.Request.QueryString["oauth_verifier"]);
                this.OAuthToken       = twitterAuth.TokenSecret;
                this.OAuthTokenSecret = twitterAuth.Token;
            }
            if (twitterAuth.TokenSecret.Length > 0)
            {
                empty = "https://api.twitter.com/1.1/statuses/update.json";
                str   = twitterAuth.OAuthWebRequest(TwitterAuth.Method.POST, empty, string.Concat("status=", TwitterBase.UrlEncode(content)));
            }
        }