Exemple #1
0
 public static void SaveSettings(this ISettingsService settingsService, TwitterCredentials credentials)
 {
     settingsService.Set(SettingsKey, credentials);
 }
        private static async Task<TwitterCredentials> GetUserCredentials(string consumerKey, string consumerSecret, string responseText)
        {
            var args = responseText.Substring(responseText.IndexOf("?") + 1)
                                   .Split(new[] { "&" }, StringSplitOptions.RemoveEmptyEntries);

            var verifier = "";
            var token = "";

            foreach (var a in args)
            {
                var index = a.IndexOf("=");
                var key = a.Substring(0, index);
                var value = a.Substring(index + 1);

                if (key.Equals("oauth_token", StringComparison.OrdinalIgnoreCase))
                    token = value;

                if (key.Equals("oauth_verifier", StringComparison.OrdinalIgnoreCase))
                    verifier = value;
            }

            var url = "https://api.twitter.com/oauth/access_token?oauth_verifier=" + verifier;

            var oauthToken = token;
            var oauthConsumerKey = consumerKey;
            var rand = new Random();
            var oauthNonce = rand.Next(1000000000).ToString();

            var ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            var oauthTimestamp = Convert.ToInt64(ts.TotalSeconds).ToString();

            var sd = new SortedDictionary<string, string>
                         {
                             {"oauth_version", OauthVersion},
                             {"oauth_consumer_key", oauthConsumerKey},
                             {"oauth_nonce", oauthNonce},
                             {"oauth_signature_method", OauthSignatureMethod},
                             {"oauth_timestamp", oauthTimestamp},
                             {"oauth_token", oauthToken}
                         };

            var baseString = "GET&" + Uri.EscapeDataString(url) + "&";
            foreach (var entry in sd)
            {
                baseString += Uri.EscapeDataString(entry.Key + "=" + entry.Value + "&");
            }

            //GS - Remove the trailing ambersand char, remember 
            //it's been urlEncoded so you have to remove the last 3 chars - %26
            baseString = baseString.Substring(0, baseString.Length - 3);

            var signingKey = Uri.EscapeDataString(consumerSecret) + "&";

            var keyMaterial = CryptographicBuffer.ConvertStringToBinary(signingKey, BinaryStringEncoding.Utf8);
            var hmacSha1Provider = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
            var macKey = hmacSha1Provider.CreateKey(keyMaterial);
            var dataToBeSigned = CryptographicBuffer.ConvertStringToBinary(baseString, BinaryStringEncoding.Utf8);
            var signatureBuffer = CryptographicEngine.Sign(macKey, dataToBeSigned);
            var signatureString = CryptographicBuffer.EncodeToBase64String(signatureBuffer);

            var hwr = WebRequest.Create(url);

            var authorizationHeaderParams = string.Format(
                "OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"{1}\", oauth_timestamp=\"{2}\", oauth_consumer_key=\"{3}\", oauth_token=\"{4}\", oauth_signature=\"{5}\", oauth_version=\"{6}\"",
                Uri.EscapeDataString(oauthNonce),
                Uri.EscapeDataString(OauthSignatureMethod),
                Uri.EscapeDataString(oauthTimestamp),
                Uri.EscapeDataString(oauthConsumerKey),
                Uri.EscapeDataString(oauthToken),
                Uri.EscapeDataString(signatureString),
                Uri.EscapeDataString(OauthVersion));

            hwr.Headers["Authorization"] = authorizationHeaderParams;

            var response = await hwr.GetResponseAsync();

            var reader = new StreamReader(response.GetResponseStream());
            var content = reader.ReadToEnd();

            var credentials = new TwitterCredentials
                                  {
                                      ConsumerKey = consumerKey,
                                      ConsumerSecret = consumerSecret
                                  };

            foreach (var a in content.Split(new[] { "&" }, StringSplitOptions.RemoveEmptyEntries))
            {
                var index = a.IndexOf("=");
                var key = a.Substring(0, index);
                var value = a.Substring(index + 1);

                if (key.Equals("oauth_token", StringComparison.OrdinalIgnoreCase))
                    credentials.Token = value;

                if (key.Equals("oauth_token_secret", StringComparison.OrdinalIgnoreCase))
                    credentials.TokenSecret = value;
            }

            credentials.Valid = true;

            return credentials;
        }
 public static void StoreUserCredentials(this ISettingsService settingsService, TwitterCredentials credentials)
 {
     settingsService.Set(Credentials, credentials);
 }
Exemple #4
0
 public UserSession(TwitterCredentials credentials)
 {
     _credentials = credentials;
 }
Exemple #5
0
        // TODO: userstream support

        public IUserSession GetUserSession(TwitterCredentials credentials)
        {
            return new UserSession(credentials);
        }