そう2010年8月31日にて twitter の Basic 認証が廃止されます。twitter の bot がつぶやかなくなります。これからは OAuth で認証だけなのだそう。趣味で運営している bot を OAuth 対応にしなくてはならない! 6月のときはW杯の関係で Basic 廃止が2か月延びたのだけれど、今回はきっちり終わるみたい。8月31日の夜まで手をつけてないなんて、まるで夏休みの宿題を最後までやらない小学生みたい!
で、夕飯後作業開始。
いろいろ bot の仕様を自分でつくっていたので、今回は Basic 認証で tweet していた関数を OAuth 認証で tweet する関数に置き換えることにしました。条件としては、ライブラリ等のインストールがなるべく少なくてすむ方法にしました。
大きな流れは下記のよう。
- twitter にアプリケーション登録
- OAauth 用アクセストークンの取得
- twitter への投稿部分関数の作成(コピペ?)
ちなみに、OAuth ってなんなのよ、って話だけれど、直接、ID と パスワードを渡すんじゃなくて、間に何か(アクセストークン)挟むから、安全ってことらしい。例えば、外部のサービスでも twitter のアカウントとパスワードを直接預けなくても使えるようになるらしい。こんな認識なんですが、間違ってたらご指摘ください。
目次
twitter にアプリケーション登録
Consumer key と Consumer Secretを得るのが目的。
下記のページを開いて「新しいアプリケーションを追加 »」をクリックすると「アプリケーション登録申請」という画面が出てきます。
→twitter にアプリケーション登録
適当に空欄を埋めていく。大事なのは下記。
- アプリケーション名:適当な名前をつける。Basic 認証のときは「API」になっていたところが好きな名前に変更できます。(もう他の人が取得している名前は登録できません。)
- アプリケーションの種類:クライアントアプリケーションを選択。コールバックしなくていいから。
- Default Access type:Read & Write を選択。つぶやく必要があるから。
保存をすると Consumer key と Consumer Secret が発行されます。
OAauth 用アクセストークンの取得
Consumer key と Consumer Secret から Access Token と Access Token Secret の2つのコードを得るのが目的。(IDとパスワードの代わりになるようなもの。)
ちょっと前に挑戦したときは、小難しかった覚えがあるのですが、今なら OAauth 用アクセストークンの取得が簡単にできるようになっています。
下記のサイトへアクセス。
→twitter developers Twitterアプリケーション
前工程の「twitter にアプリケーション登録」の作業で登録したアプリ名を選択すると、右のメニューに「My Access Token」があるので、それをクリックすると、アクセストークン(Access Token と Access Token Secret の2つ)が取得できます。
twitter への投稿部分の作成
PHP で twitter への投稿関数作成しました。というより、下記サイトからコードをお借りして、それを関数にしただけです。
→web探検隊: オリジナルtwitter投稿ツールの作成
function tweetoauth($message){
// twitteroauth.phpを読み込む。
require_once("twitteroauth.php");
// Consumer keyの値
$consumer_key = "consumer_key";
// Consumer secretの値
$consumer_secret = "consumer_secret";
// Access Tokenの値
$access_token = "access_token";
// Access Token Secretの値
$access_token_secret = "access_token_secret";
// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>$message));
//投稿が失敗したら false を返す
return false !== $req;
}
//twitter 投稿関数の呼び出し
tweetoauth("twitter へ OAuth 認証で投稿テスト!");
前2つの工程「twitter にアプリケーション登録」「twitter にアプリケーション登録」で取得した Consumer key、Consumer Secret、Access Token、Access Token Secret の4つを該当箇所にコピペします。「”」 (ダブルコーテーション)は必要なので消さないように。
このコードを動かすにはあと2つのファイルが必要です。「OAuth.php」「twitteroauth.php」というライブラリです。下記のサイトから最新版の 0.2.0-beta3 をダウンロードし、解凍するとその中に入っています。先人に感謝。
→GitHub:Downloads for abraham’s twitteroauth
「OAuth.php」「twitteroauth.php」をtwitter への投稿部分の関数を保存したファイルと同じ階層に置けばできあがり。(パスをきちんと設定すればどの階層でもOKです。)
あとは、どんな条件で呼び出すか、どんな tweet 内容にするかカスタマイズすればできあがり。
って一生懸命調べて書いたけど、下記のサイトと内容が一緒だったというオチ。というか、たぶん下記のサイトが大元っぽいです。そして、2010年5月6日にははてぶしていたという…。まったく内容を理解できていなかったんだな、自分…。
→SDN Project:PHP+OAuthでTwitter
PHP なんてわからないという人のために
全然わかんないやっていう人は下記のサイトのプログラムを使うと簡単にできるみたい。最新版なら OAuth 対応している模様。わたしは Basic 認証で tweet している関数だけを置き換えたかったので、使いませんでした。設定しだいでいろいろできるっぽです。
→プログラミングができなくても作れるTwitter botの作り方






