公開日: 2012年10月10日(Wed)
PHP から Twitter に OAuth認証してみる練習をしたので、そのメモ。
Twitter OAuth でググってみると、BOTを作る手順がすぐに見つかった。たぶん一番簡単なサンプルなんだろうと思い、今回は手始めに、投稿したりとかするBOTを作ってみることにした。
PHP用の Twitter向けOAuthライブラリ twitteroauth を使って、BOTアカウントからのツイート投稿を実装してみた。
BOTを実装するまえに、準備としてTwitterにアプリを登録しておく必要がある。まずはその手順から。
下記のURLにアクセスし、ログインする。できあがるBOTは、ログインしたアカウント名義で投稿することになるので、ここでログインするのはBOTのアカウントで。
右上の「Create an application」ボタンを押して、アプリケーションを登録する。
今回作るテストアプリのアプリ名は "pxt" とした。
アプリケーションの登録が終わったら、アプリ "pxt" の詳細画面へ行く。
アプリケーションはデフォルトで Read only となっているが、BOTは書き込みを行うので、Read and Write に変更なければならない。
手順は下記。
もう一度詳細画面に戻って、作成したアプリケーションの諸情報を確認する。
いろいろ情報が載っているが、Consumer key と Consumer secret は後で使うので、確認してメモっておく。
詳細画面の一番下にある「Create my access token」ボタンを押して、Access token を生成する。
ここで発行される、Access token と Access token secret も後で使うので、確認してメモっておく。
ここまでで事前準備はお終い。
ざっくりググって見つけたPHP用のTwitterOAuthライブラリ twitteroauth を使ってみる。
Tags から、0.2.0-beta3.zip をダウンロードして使用してみた。
ZIPを解凍するとたくさんのファイルが生成されるが、実際に使用するのは次の2ファイルだけ。
これを、任意のディレクトリに設置する。
ちなみに、このライブラリは、PHPの cURL を使用しているので、これが使えるようにPHPを設定しておく必要がある。
参考サイト に従ってサンプルコードを実装してみた。
<?php
// ライブラリを読み込む。
// 別の場所に設置した場合は、パスを修正すること。
require_once(dirname(__FILE__)."/libs/twitteroauth.php");
// Twitterから発行された値をコピペする
$consumer_key = '(ナイショ)';
$consumer_secret = '(ナイショ)';
$access_token = '(ナイショ)';
$access_token_secret = '(ナイショ)';
// TwitterOAuthオブジェクトをインスタンス化
$twiOAuth = new TwitterOAuth( $consumer_key, $consumer_secret, $access_token, $access_token_secret );
// 投稿する
$response = $twiOAuth->OAuthRequest("http://api.twitter.com/statuses/update.json","POST",array("status"=>"テスト"));
// Twitterから返されたJSONをデコードする
$result = json_decode($response);
print '<pre>';
var_dump($row);
print '</pre>';
?>
このサンプルでは、libsディレクトリの中に、twitteroauth.php と OAuth.php を設置している。別の場所に設置した場合は、require_once()
の行を修正すること。
それから、Twitterの詳細画面でメモした4つの値 $consumer_key
, $consumer_secret
, $access_token
, $access_token_secret
を、メモした通りにコピペする。
ちなみに、このサンプルはJSONのAPIを使っているので、PHPでJSON関数が使えるようになっていないとエラーになる。
このコードを実行すると、BOTアカウントで「テスト」というツイートが投稿された。
今回の練習ソースで、実際に投稿を実施しているのは下記の行だ。
// 投稿する
$response = $twiOAuth->OAuthRequest("http://api.twitter.com/statuses/update.json","POST",array("status"=>"テスト"));
ここを、別のAPIに書きかえれば、いろいろな機能を実装できる。
別のAPIについては Twitter API の仕様書を見ながらいろいろ試してみたい。けど、これはまた後日。
ちょっと古いけど下記に日本語の仕様書がある。
このサイトを参考にさせて頂きました。
公開日: 2012年10月10日(Wed)