WEB/システム/IT技術ブログ

PHPでTwitter APIを使ったOAuth認証

先日の続きで、Twitter APIのOAuthを使った具体的なPHPプログラムです。

PEARライブラリの用意

まずは、PEARライブラリを活用するので、以下のパッケージをダウンロード、インストールします。

HTTP_Request2

HTTP_OAuth

コンシュマキーの設定

前回のアプリ登録で取得したコンシューマキーを設定します。

コンシューマキーは、Twitterのサイトでログインした後、以下のページから取得できます。

http://twitter.com/apps

該当するアプリケーションをクリックし、「Consumer key」と「Consumer secret」を取得します。

PHPでコンシューマキーを設定する流れです。

require_once('HTTP/Request2.php');
require_once('HTTP/OAuth/Consumer.php');
$consumer = new HTTP_OAuth_Consumer("Consumer key", "Consumer secret");
$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);
$consumer_request = new HTTP_OAuth_Consumer_Request();
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);

認証URLを取得

リクエストトークンを取得し、それを元に認証URLを取得します。リクエストトークンを得る際には、コールバックURLを合わせて投げます。

$consumer->getRequestToken('https://twitter.com/oauth/request_token', 'コールバックURL');
$request_token = $consumer->getToken();
$request_token_secret = $consumer->getTokenSecret();
$auth_url = $consumer->getAuthorizeUrl('https://twitter.com/oauth/authorize');

取得した「$auth_url」へアクセスすると、Twitter本サイトの認証画面に遷移します。認証画面で認証を経ると、先にセットした「コールバックURL」に自動遷移するしくみです。

アクセストークンを取得

認証に成功してコールバックしてきたら、アクセストークンが投げられてくるので、これをセッションやDBなどに保持しておくと後々便利です。

$consumer->setToken($request_token);
$consumer->setTokenSecret($request_token_secret);
$verifier = $_GET['oauth_verifier'];
$consumer->getAccessToken('https://twitter.com/oauth/access_token', $verifier);
$access_token = $consumer->getToken();
$access_token_secret = $consumer->getTokenSecret();

認証が成功した場合、「oauth_verifier」がコールバックで返ってきます。一方で、認証が失敗した場合には「denied」が返ってきます。これらを判定して、処理を分けるといいでしょう。

つぶやいてみる

取得したアクセストークンを使って、「てすとです」とつぶやく例です。

$consumer->setToken($access_token);
$consumer->setTokenSecret($access_token_secret);
$res = $consumer->sendRequest("https://twitter.com/statuses/update.xml", array('status' => 'てすとです'), "POST");

アクセストークンを使うことで、フォローしたり、リツイートしてり、設定を変更したりと、Twitter本サイトで可能な操作がほとんどできてしまいます。
アクセストークンを保持することで、認証の処理をスキップして連続で処理することができます。つまり、上の例だと「コンシュマキーの設定」から「つぶやいてみる」が実行できるわけです。アクセストークンがあればなんでもできちゃうので、保持するにしても扱いに注意が必要です。

また、急激な普及をみせるTwitterだけに、Twitter APIの仕様は日々変更されています。上の例は、現時点での動作は確認済みですが、今後は保障できません。

B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives