/// <summary> /// Authenticates this <see cref="Budgie.TwitterClient"/> with an already-known OAuth access token and token_secret. /// </summary> /// <param name="accessToken">An OAuth access token.</param> /// <param name="accessTokenSecret">An OAuth access token_secret.</param> /// <returns>An instance of <see cref="Budgie.TwitterClient.TwitterAccessToken"/> with the supplied values.</returns> public TwitterAccessToken Authenticate(string accessToken, string accessTokenSecret) { m_accessToken = new TwitterAccessToken { Token = accessToken, Secret = accessTokenSecret, }; return(m_accessToken); }
/// <summary> /// Authenticates this <see cref="Budgie.TwitterClient"/> by requesting an OAuth access token and token_secret from Twitter. /// </summary> /// <param name="requestToken">An OAuth request token.</param> /// <param name="verifier">A verification PIN obtained by the user from Twitter.</param> /// <returns>An instance of <see cref="TwitterAccessToken"/> with the tokens returned from Twitter.</returns> public Task <TwitterAccessToken> AuthenticateAsync(TwitterRequestToken requestToken, string verifier) { return(HttpPostAsync("/oauth/access_token", "oauth_verifier=" + verifier, requestToken).ContinueWith(t => { if (t.IsFaulted) { return null; } var response = t.Result as HttpWebResponse; if (response.StatusCode != HttpStatusCode.OK) { return null; } string responseString = response.GetContentString(); if (responseString.IsNullOrWhiteSpace()) { return null; } var result = new TwitterAccessToken(); foreach (var i in responseString.Split('&')) { var kv = i.Split('='); if (kv.Length < 2) { continue; } if (kv[0] == "oauth_token") { result.Token = kv[1]; } else if (kv[0] == "oauth_token_secret") { result.Secret = kv[1]; } else if (kv[0] == "user_id") { result.UserId = kv[1]; } else if (kv[0] == "screen_name") { result.ScreenName = kv[1]; } } if (!result.IsValid) { return null; } return (m_accessToken = result); })); }