C# ile Twitter Üzerinden İstenilen Kullanıcının Tweetlerini Getirme

Merhaba arkadaşlar bugün sizlere C# kullanarak istenilen bir kullanıcının Tweetter hesabından gönderilerini nasıl paylaşacağından bahsedeceğim.

Bunun için öncelikle Twitter Application Management sitesine girerek oradan yeni bir app oluşturarak “Consumer Key (API Key)” ve “Consumer Secret (API Secret)” keylerini almanız gerekmektedir.

Siteye girip login olduğunuz zaman Karşınıza yukarıdaki gibi bir ekran gelecektir ve sayfanın ortasında yer alan “Create New App” butonuna tıklayarak yeni twitter uygulamanızı oluşturmaya başlayabilirsiniz.

Daha sonra karşınıza yukarıdaki gibi oluşturacağınız uygulamanın adını, açıklamasını, site adresini ve geri dönüş url adresi bilgilerini isteyen bir ekran çıkacaktır. Alanların alt kısımlarında yer alan yazılarda da bu alanlarla ilgili açıklamalar yer almaktadır.

Gerekli alanları doldurup kullanım sözleşmesini onayladıktan sonra “Create your Twitter application” butonuna basarak uygulamanızı oluşturma işleminizi tamamlayabilirsiniz.

Sorunsuz bir şekilde twitter uygulamanızı oluşturduktan sonra “Application Settings” kısmında yer alan “Consumer Key (API Key)” başlığının karşısında yer alan “manage keys and access tokens” linkine tıklıyoruz.

Bu sayfada size lazım olan “Consumer Key (API Key)” ve “Consumer Secret (API Secret)” keylerini bulabilirsiniz. Aynı zamanda onların alt kısmında yer alan “Access Level” başlığının karşısında ise bu uygulamanın hangi yetkilere sahip olduğunu göstermektedir ve “modify app permissions” linkine tıklayarak bu yetkiyi değiştirebilirsiniz.

Bu kısımdan sonra yapmamız gereken sadece bu keyleri kullanarak uygulamamızı yazmak ve istediğimiz dataları çekmek.

İlk olarak projemizde bir tane “Twitter.cs” class ı oluşturuyoruz.

</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Net.Http;<br />
using System.Text;<br />
using System.Threading.Tasks;<br />
using System.Web.Script.Serialization;&lt;/pre&gt;<br />
namespace Twitter<br />
{<br />
public class Twitter<br />
{<br />
public string OAuthConsumerSecret { get; set; }<br />
public string OAuthConsumerKey { get; set; }</p>
<p>public async Task&lt;IEnumerable&lt;string&gt;&gt; GetTwitts(string userName,int count, string accessToken = null)<br />
{<br />
if (accessToken == null)<br />
{<br />
accessToken = await GetAccessToken();<br />
}</p>
<p>var requestUserTimeline = new HttpRequestMessage(HttpMethod.Get, string.Format(&quot;https://api.twitter.com/1.1/statuses/user_timeline.json?count={0}&amp;screen_name={1}&amp;trim_user=1&amp;exclude_replies=1&quot;, count, userName));<br />
requestUserTimeline.Headers.Add(&quot;Authorization&quot;, &quot;Bearer &quot; + accessToken);<br />
var httpClient = new HttpClient();<br />
HttpResponseMessage responseUserTimeLine = await httpClient.SendAsync(requestUserTimeline);<br />
var serializer = new JavaScriptSerializer();<br />
dynamic json = serializer.Deserialize&lt;object&gt;(await responseUserTimeLine.Content.ReadAsStringAsync());<br />
var enumerableTwitts = (json as IEnumerable&lt;dynamic&gt;);</p>
<p>if (enumerableTwitts == null)<br />
{<br />
return null;<br />
}<br />
return enumerableTwitts.Select(t =&gt; (string)(t[&quot;text&quot;].ToString()));<br />
}</p>
<p>public async Task&lt;string&gt; GetAccessToken()<br />
{<br />
var httpClient = new HttpClient();<br />
var request = new HttpRequestMessage(HttpMethod.Post, &quot;https://api.twitter.com/oauth2/token &quot;);<br />
var customerInfo = Convert.ToBase64String(new UTF8Encoding().GetBytes(OAuthConsumerKey + &quot;:&quot; + OAuthConsumerSecret));<br />
request.Headers.Add(&quot;Authorization&quot;, &quot;Basic &quot; + customerInfo);<br />
request.Content = new StringContent(&quot;grant_type=client_credentials&quot;, Encoding.UTF8, &quot;application/x-www-form-urlencoded&quot;);</p>
<p>HttpResponseMessage response = await httpClient.SendAsync(request);</p>
<p>string json = await response.Content.ReadAsStringAsync();<br />
var serializer = new JavaScriptSerializer();<br />
dynamic item = serializer.Deserialize&lt;object&gt;(json);<br />
return item[&quot;access_token&quot;];<br />
}<br />
}<br />
}</p>
<p>

Yukarıdaki kodu bu class ımızın içine yazıyoruz ve kaydediyoruz.

Kodumuzdan biraz bahsedecek olursak İlk olarak keylerimizi kullanarak twitterdan acccess token alıyoruz ve bunu kullanarak twitter api si üzerinden istediğimiz şekilde sorgumuzu atıyoruz.

</p>
<p>var requestUserTimeline = new HttpRequestMessage(HttpMethod.Get, string.Format(&quot;https://api.twitter.com/1.1/statuses/user_timeline.json?count={0}&amp;amp;screen_name={1}&quot;, count, userName));</p>
<p>

Yukarıdaki api adresi üzerinde benim sorgum yer almaktadır. Bu sorguyu istediğiniz gibi güncelleyebilirsiniz. Bu apinin kullanımı ile ilgili Twitter ın yanınlamış olduğu GET statuses/user_timeline adresinden apiyi inceleyebilir ve ihtiyacınıza göre sorgu apinizi değiştirebilirsiniz.

</p>
<p>return enumerableTwitts.Select(t =&gt; (string)(t[&quot;text&quot;].ToString()));</p>
<p>

Aynı şekilde paylaştığım kodda bulunan yukarıdaki satırda ise gelen data ile ilgili neyi çekmek istediğinizi belirleyebiliyorsunuz ve bununla ilgili detaylı bilgi de GET statuses/user_timeline adresinde bulunmaktadır.

Gerekli şekilde ayarlamalarımızı yaptıktan sonra bu gelen datalarımızı nerede kullanmak istiyorsanız o projetenin kod kısmına gidiyoruz ve oluşturduğumuz “Twitter.cs” classını referans olarak ekliyoruz.

</p>
<p>var twitter = new Twitter<br />
{<br />
OAuthConsumerKey = &quot;OAuthConsumerKeyString&quot;,<br />
OAuthConsumerSecret = &quot;OAuthConsumerSecretString&quot;<br />
};<br />
IEnumerable&lt;string&gt; tweets = twitter.GetTwitts(&quot;UserAccountName&quot;, GetTwettNumber).Result;<br />
foreach (var tweet in tweets)<br />
{<br />
Console.WriteLine(tweet+ &quot;\n&quot;);<br />
}<br />
Console.ReadKey();</p>
<p>

Yukarıdaki kodu ekleyerek istediğiniz gibi data çekebilirsiniz.

Kodda var olan alanlarda alanlarda yer alan

OAuthConsumerKeyString : Twitter uygulamasından alınan Consumer Key (API Key) imizi,

OAuthConsumerSecretString : Twitter uygulamasından alınan Consumer Secret (API Secret) imizi,

UserAccountName : Twitter da hangi kullanıcının twitterlerini getirmek istiyorsan o kullanıcının kullanıcı adresi,

GetTwettNumber : Getirmek istediğiniz tweet sayısı

alanlarını açıklanan şekilde doldurduğunuz taktirde istediğiniz kullanıcının twittlerini okuyor olacaksınız.

Bir Cevap Yazın