Created
October 22, 2015 03:47
-
-
Save JerryBian/64b1a49699e4cd4dca87 to your computer and use it in GitHub Desktop.
Get Twitter Home Timeline via C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TweetHttpClient : ITwitterHttpClient | |
{ | |
public TweetHttpClient() | |
{ | |
_httpClient = new HttpClient | |
{ | |
BaseAddress = new Uri("https://api.twitter.com/") | |
}; | |
} | |
public async Task<List<TweetStatus>> GetUserTimeLineAsync(string screenName, int count) | |
{ | |
var accessToken = await GetAccessTokenAsync(); | |
_httpClient.DefaultRequestHeaders.Clear(); | |
_httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken); | |
var response = await _httpClient.GetAsync($"1.1/statuses/user_timeline.json?screen_name={screenName}&count={count}"); | |
var json = await response.Content.ReadAsStringAsync(); | |
return JsonConvert.DeserializeObject<List<TweetStatus>>(json); | |
} | |
#region Private methods | |
private async Task<string> GetAccessTokenAsync() | |
{ | |
var consumerKeyUrlEncode = Uri.EscapeDataString(ConfigurationSetting.TwitterConsumerKey); | |
var consumerSecretUrlEncode = Uri.EscapeDataString(ConfigurationSetting.TwitterConsumerSecret); | |
var concatConsumerKeyAndSecret = string.Concat(consumerKeyUrlEncode, ":", consumerSecretUrlEncode); | |
var base64ConcatConsumerKeyAndSecret = Convert.ToBase64String(Encoding.UTF8.GetBytes(concatConsumerKeyAndSecret)); | |
_httpClient.DefaultRequestHeaders.Clear(); | |
_httpClient.DefaultRequestHeaders.Add("Authorization", "Basic " + base64ConcatConsumerKeyAndSecret); | |
var bearerToken = | |
await _httpClient.PostAsync("oauth2/token", new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("grant_type", "client_credentials"), })); | |
var accessToken = await bearerToken.Content.ReadAsStringAsync(); | |
var obj = JsonConvert.DeserializeAnonymousType(accessToken, new { access_token = accessToken }); | |
return obj.access_token; | |
} | |
#endregion | |
#region Fields | |
private readonly HttpClient _httpClient; | |
#endregion | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment