Twitterからつぶやきを取得して活用したいと考えていたときに、実際APIでOAuth認証とつぶやき取得をした際のメモです。サンプルコードも載せていますので何かの参考になればうれしいです。
事前準備としてTwitter APIのアカウントを取得し、Twitterアプリケーションの登録が完了している必要があります。
まだの方は、まずTwitter AppsからDeveloper acountを申請しましょう(要サインイン)。利用申請は英語で行われ、電話番号が必要になったり審査が厳しくなっているようです。私も審査に3週間かかり、一度リジェクトされたものの、最終的には承認されました。
tmhOauthとは、アクセスキーとトークンを設定するだけでTwitter APIのOauth認証を代わりにやってくれる超便利なライブラリです。
Githubからダウンロードできます。
tmhOauth.phpをPHPのinclude_pathが通っているディレクトリか、tmhOauth.phpを呼び出すphpファイルと同じディレクトリに配置しましょう。
”######”になっているアクセスキーとトークンをhttps://developer.twitter.com/en/apps の「Keys and tokens」に記載されている内容に書き換えて、ブラウザでアクセスしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php require_once("tmhOAuth.php"); class twitterApi { function __construct() { //Consumer keyをset $ConsumerKey = "###################"; //Consumer secretをset $ConsumerSecret = "###################"; //Access Tokenをset $AccessToken = "#####################"; //Access Token Secretをset $AccessTokenSecret = "###################"; //OAuthオブジェクトを生成する $this->tweetObj = new tmhOauth( array( "consumer_key" => $ConsumerKey, "consumer_secret" => $ConsumerSecret, "token" => $AccessToken, "secret" => $AccessTokenSecret, "curl_ssl_verifypeer" => false ) ); } function getNewTweet($query) { $encode_query = urlencode($query); //Twitter REST API 呼び出し $this->tweetObj->request( 'GET' ,"https://api.twitter.com/1.1/search/tweets.json" ,array( "q" => $encode_query ." exclude:retweets" ,"result_type" => "recent" ,"count" => "30" ) ); // jsonを配列に変換 $arrayData = json_decode($this->tweetObj->response["response"], true); if(isset($arrayData['errors']) && $arrayData['errors'] != '') { print_r($arrayData); return false; } else { return $this->tweetObj->response["response"]; } } } //オブジェクト生成 $tweetObj = new twitterApi(); //キーワード「sushi」の検索結果(json)を配列に変換 $response = json_decode($tweetObj->getNewTweet("sushi"), true); //配列を表示 foreach ($response["statuses"] as $row) { echo "username:" . $row["user"]["name"] ."<br />"; echo "userimg:" . "<img src='".$row["user"]["profile_image_url_https"] . "'><br />"; echo "timestamp:" . date("Y/m/d H:i", strtotime($row["created_at"])) . "<br />"; echo "tweet_text:" . $row["text"] . "<br />"; echo "<hr>"; } |
どうでしょうか?スムーズに進められれば本当に5分でツイートを取得できると思います。認証処理を書くのは手間ですが、こういったライブラリを有効活用してロジック作りに時間を割きたいですね。お互い、Twitter APIを楽しみましょう!