そう 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 の作り方