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); }
public UserSession(TwitterCredentials credentials) { _credentials = credentials; }
// TODO: userstream support public IUserSession GetUserSession(TwitterCredentials credentials) { return new UserSession(credentials); }