public static async Task <OAuthTokens> GetAccessToken(string twitterConsumerKey, string twitterConsumerSecret, string accessToken, string accessTokenSecret, string oauthVerifier) { return(await RequestHandler(async() => { const string requestTokenUrl = "https://api.twitter.com/oauth/access_token"; var oauth = OAuthFactory.CreateOAuth(twitterConsumerKey, twitterConsumerSecret); var nonce = oauth.Nonce(); var timestamp = oauth.TimeStamp(); var parameters = new[] { new[] { "oauth_verifier", oauthVerifier } }; var signature = oauth.Signature("POST", requestTokenUrl, nonce, timestamp, accessToken, accessTokenSecret, parameters); var authorizationHeader = oauth.AuthorizationHeader(nonce, timestamp, accessToken, signature, parameters); var request = System.Net.WebRequest.Create(new Uri(requestTokenUrl)); request.Method = "POST"; request.Headers.Add("Authorization", authorizationHeader); using (var response = await request.GetResponseAsync()) using (var stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { var tokens = stream.ReadToEnd().Split('&'); var oauthTokens = new OAuthTokens { OAuthToken = Token(tokens[0]), OAuthSecret = Token(tokens[1]), UserId = Token(tokens[2]), }; return oauthTokens; } })); }
public static async Task <OAuthTokens> GetRequestToken(string twitterConsumerKey, string twitterConsumerSecret) { return(await RequestHandler(async() => { const string requestTokenUrl = "https://api.twitter.com/oauth/request_token"; var oauth = OAuthFactory.CreateOAuth(twitterConsumerKey, twitterConsumerSecret); var nonce = oauth.Nonce(); var timestamp = oauth.TimeStamp(); var parameters = new[] { new[] { "oauth_callback", "oob" } }; var signature = oauth.Signature("POST", requestTokenUrl, nonce, timestamp, "", "", parameters); var authorizationHeader = oauth.AuthorizationHeader(nonce, timestamp, null, signature, parameters); var request = System.Net.WebRequest.Create(new Uri(requestTokenUrl)); request.Method = "POST"; request.Headers.Add("Authorization", authorizationHeader); using (var response = await request.GetResponseAsync()) using (var stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { var body = stream.ReadToEnd(); var tokens = body.Split('&'); var oauthToken = Token(tokens[0]); var oauthSecret = Token(tokens[1]); var callbackConfirmed = Token(tokens[2]); if (callbackConfirmed != "true") { throw new InvalidProgramException("callback token not confirmed"); } return new OAuthTokens { OAuthToken = oauthToken, OAuthSecret = oauthSecret }; } })); }