Twitter API v1.1 ile Son Tweet'leri Çekme

Eğer dikkat ettiyseniz sitenin sağ alt tarafında attığım son tweet'ler gösterilmektedir. İşte bu makalede bunun nasıl yapıldığını anlatacağım. Bilindiği gibi api'nin 1.0 sürümünde yetkilendirme olmaksızın tweet'ler çekilebiliyordu. Bu durumda sadece jQuery ile rahatlıkla bu işlem gerçekleştiriliyordu. Ancak Twitter'ın api'yi 1.1 sürümüne yükseltmesiyle birlikte artık Oauth yetkilendirme olmaksızın tweet'leri çekemiyoruz. Yani artık mutlaka server-side kod yazmamız gerekli. Ben de PHP ile bu işlemlerin nasıl yapılacağını anlatmaya çalışacağım. Bunun için ilk önce bir twitter uygulaması oluşturmanız gerekiyor.

dev.twitter.com/apps adresine gittikten sonra Create a new application diyoruz. Uygulamamızın ismi, açıklaması, web sitemiz gibi bilgileri giriyoruz. Dilersek uygulamamıza ait bir ikon da yükleyebiliriz. Daha sonra Details sekmesindeki altta bulunan Create my access token butonuna tıklayarak twitter hesabımıza erişim izni veren access token verimizi oluşturuyoruz. Artık API Keys sekmesinden gerekli yetkilendirme bilgilerimizi öğrenebiliriz. Bu işlemleri gerçekleştirdikten sonra sıra geldi kodlarımızı yazmaya.

github.com/dg/twitter-php/releases/latest adresinden uygulamamızı indiriyoruz. Zip dosyasının içinde src klasöründeki OAuth.php ve twitter.class.php dosyalarını sunucumuza upload ediyoruz. Tweet'lerin gösterileceği php dosyamızı açıp aşağıdaki gibi kodlarımızı yazıyoruz.

require_once $_SERVER['DOCUMENT_ROOT'] . '/twitter/twitter.class.php'//Upload ettiğimiz dosyanın yolu.
Twitter::$cacheDir = '/home/username/tmp/'//Tweet'lerin önbelleğe alınacağı yazma iznimizin olduğu dizin.
$twitter = new Twitter($consumerKey$consumerSecret$accessToken$accessTokenSecret); //Burada twitter uygulamamızın api bilgilerini giriyoruz. 
$statuses = $twitter->load(Twitter::ME); //ME diyerek kendi tweet'lerimizi çekiyoruz.
//ME yerine ME_AND_FRIENDS dersek takip ettiğimiz kişilerin tweet'leri de listelenir.
//ME yerine REPLIES dersek tweet'lerimize yazılan cevaplar listelenir.

Tweet'lerimizi çektik. Şimdi bunları sayfamızda yazdıralım.

<ul>
<?php foreach ($statuses as $status): ?>
    <li><?php echo Twitter::clickable($status?><a href="//twitter.com/mhmtyylc/statuses/<?php echo $status->id ?>" target="_blank" class="timeago" title="<?php echo date("m-d-Y H:i:s", strtotime($status->created_at)) ?>"><? echo strftime("%d %B %Y - %H:%M", mktime(date("H", strtotime($status->created_at)), date("i", strtotime($status->created_at)), date("s", strtotime($status->created_at)), date("m", strtotime($status->created_at)), date("d", strtotime($status->created_at)), date("Y", strtotime($status->created_at)))); ?></a></li>
<?php endforeach ?>
</ul>

Ben tarihin Türkçe yazılması için biraz uzattım kodları. Siz isteğinize göre özelleştirebilirsiniz. Ve son olarak yapacağımız işlem tweet tarihlerini twitter safyasındaki gibi 3 dakika önce, 5 dakika önce şeklinde yazdırmak. Bunun için timeago.yarp.com/jquery.timeago.js adresinden timeago eklentisini indiriyoruz. Eğer eklentiyi Türkçeleştirmek isterseniz benim gibi kendiniz jQuery dosyasını düzenleyebilirsiniz ya da github.com/rmm5t/jquery-timeago/blob/master/locales/jquery.timeago.tr.js adresinden Türkçe eklentiyi indirip kullanabilirsiniz. Tweet'lerin çekildiği sayfada aşağıdaki javascript kodlarını yazıyoruz.

<script src="jquery.timeago.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
  jQuery("a.timeago").timeago();
});
</script>

Hepsi bu kadar. Sorularınız olursa memnuniyetle cevaplayabilirim.

Mehmet YAYLACI
YORUMLAR (8)
  1. yusuf karpak
    yusuf karpak - Cevapla

    30 Nisan 2014 - 00:03

    merhabalar ben bunu asp.net de yapmak istiyorum ama bi türlü cevap bulamadım yardımcı olurmusunuz.

  2. Ahmet
    Ahmet - Cevapla

    05 Şubat 2016 - 15:41

    Hocam bende twitleri çekmek istiyorum ama php bilgim fazla yeterli olmadıgı için beceremedim. rica etsem bir dosya haline getirsenizde index.php de twitleri yazdıracagınız bir dosya paylasmanız mümkünmü

    • Mehmet YAYLACI
      Mehmet YAYLACI - Cevapla

      06 Şubat 2016 - 11:23

      Yukarıdaki kodları index.php dosyasına sırasıyla eklerseniz (açıklamalara dikkat ederek gerekli yerleri değiştiriniz) isteğinizi yapabilirsiniz. Sorunla karşılaşırsanız cevaplayabilirim. Kolay gelsin.

  3. Ünal ULUBAY
    Ünal ULUBAY - Cevapla

    27 Ekim 2016 - 16:41

    Hocam Merhaba, ben, attığım twitleri değilde (veri havuzu oluşturmak için belirli sayıda) atılan tüm twitleri çekmek istiyorum Bunu nasıl yapabilirim. Bilgi verirmisiniz?

    • Mehmet YAYLACI
      Mehmet YAYLACI - Cevapla

      30 Ekim 2016 - 18:57

      Makalede açıklamasını yapmıştım ama tekrar edeyim. Kod satırında ME yerine ME_AND_FRIENDS dersek takip ettiğimiz kişilerin tweet'leri de listelenir. Aşağıdaki gibi:

      $statuses = $twitter->load(Twitter::ME_AND_FRIENDS);

  4. halit kara
    halit kara - Cevapla

    18 Eylül 2018 - 14:13

    merhaba hocam, sosyal medya hesaplarından (youtube, instagram,twitter,facebook ) login olmadan istediğim kişilerin kaç gönderisi, takipçisi,takip ettiği bilgileri çekebilir miyim ? bunları apiler ile çekmek mümkün mü ?

    • Mehmet YAYLACI
      Mehmet YAYLACI - Cevapla

      18 Eylül 2018 - 15:14

      Merhaba. Youtube ve Instagram hakkında bilgim yok. Ancak Facebook ve Twitter'da login olmadan hiçbir işlem yapamazsınız. Birer adet uygulama olşturup bu uygulamaların kimlik bilgileriyle giriş yaparak verileri çekebilirsiniz.

YORUM FORMU