Twitter API ile Application-only Access Token Kullanımı

Twitter, kullanıcı hesaplarıyla birebir etkileşim sağlayan API endpoint’ler (örneğin tweet atmayı sağlayan statuses/update gibi) haricindeki işlemlerde kullanmanız için, Twitter uygulamanıza ait bir access token (bearer token) veriyor. Sadece bu token kullanılarak bir çok API işlemi yapılabilir. Bu sayede api rate limiti artırabiliriz. Örneğin tweet aramasında bir kullanıcaya ait access token ile 15 dakikada 180 api isteği yapabilirken, application token ile 450 istek yapabiliyoruz (limitler).

Aşağıdaki cURL komutu işe application access token’ınızı alabilirsiniz. consumerKey ve consumerSecret bilgilerinize uygulama detay sayfasından ulaşabilirsiniz.

curl -X POST --verbose "https://api.twitter.com/oauth2/token" -d "grant_type=client_credentials" -u consumerKey:consumerSecret -k

Şimdi de bu token ile Guzzle kütüphanesini kullanarak bir hashtag araması yapalım:

<?php

use GuzzleHttp\Client;
 
// twitter api için client oluştur
$client = new Client(
    [
        'base_url'   => 'https://api.twitter.com/1.1/'
    ]
);
 
// bearer token
$applicationAccessToken = 'burada';
 
// aranan hashtag
$hashtag = 'beşiktaş';
 
// request
$request = $client->get(
    'search/tweets.json',
    [
        'query'   => [
            'q'           => $hashtag,
            'lang'        => 'tr',
            'result_type' => 'recent',
            'count'       => 20,
        ],
        'headers' => [
            'Authorization' => 'Bearer ' . $applicationAccessToken,
        ]
    ]
);

// array olarak tweet'leri alalım
$tweets = $request->json();
 
foreach($tweets['statuses'] as $tweet) {
    printf("<b>%s</b>: %s<br>\n", $tweet['user']['name'], $tweet['text']);
}