Eğer dikkat ettiyseniz sitenin sağ alt tarafında attığım son tweet'ler gösterilmektedir. İşte bu yazıda 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.
<?php
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/username/status/<?php echo $status->id ?>" target="_blank" class="timeago" title="<?php echo date("m-d-Y H:i:s", strtotime($status->created_at)) ?>">
<?php echo strftime("%d %B %Y %A, %H:%M", 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"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("a.timeago").timeago();
});
</script>
Hepsi bu kadar. Sorularınız olursa memnuniyetle cevaplayabilirim.
YORUMLAR (8)
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?
Yazıda 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: