2010年9月21日火曜日

PHPからTwitter APIのOAuthを使って投稿

OAuthを使ってtwitterで投稿するためには、consumer_key、consumer_secret、auth_token、token_secretの4つが必要になる。


consumer_key、consumer_secretを取得

これは、twitterのアプリを登録してkeyをもらう感じ。

Twitter / アプリケーション
にアクセスして、アプリケーションを登録。

登録すると、登録したアプリ用の「consumer_key」と「consumer_secret」が表示されるのでそれをメモっておく。


auth_token、token_secretを取得

上のアプリを使うアカウントのkeyを取得する感じ。

2010-01-24 - hirokan55の日記のサイトを参考に、
Downloads for abraham's twitteroauth - GitHubからabraham-twitteroauth-XXXXX.zipを落としてきて、
どこか自分のサーバにファイル群を置き、
config.phpのCONSUMER_KEY、CONSUMER_SECRETを上のアプリのkeyに、OAUTH_CALLBACKをおいたcallback.phpのURLとして修正する。

そのあと、index.phpにアクセスし、twitter側に認可を求めて、OAuth tokenとOAuth token secretを発行してもらう。

で、表示されたOAuth tokenとOAuth token secretをメモっておく。


ここまでで、consumer_key、consumer_secret、auth_token、token_secretの4つがわかったので、あとはこれを使って投稿するだけ。


投稿のやり方はたくさんあるけど、今回はpearのservices_twitterとHTTP_OAuthを使った。


まずインストール

services_twitterを入れる
$ sudo pear install --force services_twitter
.....
Starting to download Net_URL2-0.3.1.tgz (8,488 bytes)
...done: 8,488 bytes
install ok: channel://pear.php.net/Net_URL2-0.3.1
install ok: channel://pear.php.net/HTTP_Request2-0.5.2
install ok: channel://pear.php.net/Services_Twitter-0.6.2

HTTP_OAuthを入れる(stableがないので今回は0.1.18のバージョン指定で入れる)
$ sudo pear install HTTP_OAuth-0.1.18
.....
downloading HTTP_OAuth-0.1.18.tgz ...
Starting to download HTTP_OAuth-0.1.18.tgz (51,237 bytes)
.............done: 51,237 bytes
install ok: channel://pear.php.net/HTTP_OAuth-0.1.18


サンプルコード
require_once 'Services/Twitter.php';
require_once 'HTTP/OAuth/Consumer.php';

try {
    $twitter = new Services_Twitter();
    $oauth   = new HTTP_OAuth_Consumer(
       'メモったconsumer_key',
       'メモったconsumer_secret',
       'メモったauth_token',
       'メモったtoken_secret'
    );
    $twitter->setOAuth($oauth);
    $msg = $twitter->statuses->update("OAuth経由でTwitterに投稿するよ。");
} catch (Services_Twitter_Exception $e) {
    echo $e->getMessage();
}


参考
- 2010-01-24 - hirokan55の日記
- PHPでTwitter APIのOAuthを使う方法 - memo.xight.org