[PHP] Twitter REST API (以Search API為例) – 使用 TwitterAPIExchange.php

基本上作者有一份文件,教學講得還蠻完整的,這個專案還不停的在更新。
同樣的,要使用 Search API 撈取 twitter 的歷史 tweets,必須要先到開發者網站去建立你的 Application 並取得 Consumer KeyConsumer SecretAccess Token  Access Token Secret
接著你需要到 TwitterAPIExchange 的 GitHub 上去下載這個專案回來

你會發現這個專案的檔案數目比 Phirehose 少了很多,最核心的也就只有 TwitterAPIExchange.php 這支檔案
把下載回來的原始碼資料夾放置到網頁或是應用程式的目錄下,接著開始編輯你要用來撈資料的 PHP 檔案:

1. 在檔案中引入 TwitterAPIExchange.php 這個檔案
require_once(‘TwitterAPIExchange.php’);
2. 接著你需要設定取得的 OAuth Keys
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

之所以是用陣列來儲存這些 keys 的原因在於,我們稍後建立查詢物件 TwitterAPIExchange 的時候,就會直接在 Constructor 中用這四個 keys 來做物件初始化

3. 設定好了 Keys 之後,還需要設定你要存取的 API URL 和指定存取的方式為 GET 還是 POST
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$requestMethod = 'GET';
4. 因為我們要取得有篩選過的資料,因此還要再多設定過濾參數
l   假如你是採用 GET 方法,直接寫成:
$getfield = '?q=Justin+AND+Singer&count=2';
(注意!有包含 “?q=" 這三個字元喔!)
l   假如你是採用 POST 方法,需要以陣列來一一儲存:
$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
); 
5. 如此最主要的四個項目:KeyURLMethodfilter 都設定好了以後,就可以建立查詢物件 TwitterAPIExchange 來送出查詢請求
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();
new 出物件以後,利用這個物件先做驗證,然後設定查詢過濾參數,最後才發送出 request,伺服器接收以後會回傳要求存取的資料
回傳的物件多數為 JSON 格式,如果無法直接用 echo 解析(至少我無法),可以修改如下:
$json = $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();
var_dump(json_decode($json, true));
下圖為我上面使用 GET 方法像 Search API 的要求存取包含 Justin 和 Singer 兩個關鍵字的 tweets.json

你可以開啟 index.php 這支檔案試試看,那是一個作者寫的範例程式

這個作品還真的是很漂亮的一支程式

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s