アプリケーション登録
下記ページにアクセスします。
https://dev.twitter.com/apps
ログイン画面が表示されるので、表示したいTwitterアカウントでログインします。
My applications ページが表示されたら「Create a new application」ボタンをクリック。
「Create an application」ページでアプリ情報を入力する。
Name | アプリ名 |
---|---|
Description | アプリの説明 |
Website | アプリのURL |
Callback URL | コールバックされるURL |
「Name」は独自のものにする必要があります。
「Website」は設置するサイトに変更してください。
「Callback URL」はユーザーに認証させる場合は必要ですが、今回は自分のツイートを表示するだけなので必要ないです。
「Yes, I agree」にチェックして「Create your Twitter application」ボタンをクリックします。
「Consumer key」と「Consumer secret」をメモして、「Create my access token」をクリックします。
画面が遷移して Your access token という欄が増えますので「Access token」「Access token secret」をメモしておきます。
PHPで自分のつぶやきを表示
認証にはライブラリを使用すると簡単です、今回は「abraham/twitteroauth」というのを使用します。
abraham/twitteroauth
フォルダの中から「twitteroauth」というフォルダを取り出す。(中には「OAuth.php」「twitteroauth.php」があります。) 新しいPHPファイル(twitter.php)を作成して同階層に「twitteroauth」フォルダを配置。
twitter.php
<?php require_once("twitteroauth/twitteroauth.php"); $consumerKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"; $consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"; $accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"; $accessTokenSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"; $twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret); $req = $twObj->OAuthRequest("https://api.twitter.com/1.1/statuses/user_timeline.json","GET",array("count"=>"10")); $tw_arr = json_decode($req); if (isset($tw_arr)) { foreach ($tw_arr as $key => $val) { echo $tw_arr[$key]->text; echo date('Y-m-d H:i:s', strtotime($tw_arr[$key]->created_at)); echo '
'; } } else { echo 'つぶやきはありません。'; }
「$consumerKey」「$consumerSecret」「$accessToken」「$accessTokenSecret」には先ほど取得したそれぞれのキーを入力します。
最終的にjQueryで出力したい
1.0以前はつぶやきの表示くらいはjQueryだけでやってたので、最終的にjQueryで表示したいという場合があります。
その場合「$req」以下を下記のようにすればjsonpでそのまま出力できます。
twitter.php
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('count'=>'10')); echo $_GET['callback'] . '(' . $req. ')';
あとはJavaScriptで下記のようにすれば今までのJSデータをそれほど修正することなくいけるんじゃないかなと。
$.getJSON('http://www.example.com/twitter.php?callback=?', function (json) { console.log(json); });