ぼやき

4

そう 2010 年 8 月 31 日にて twitter の Basic 認証が廃止されます。 twitter の bot がつぶやかなくなります。これからは OAuth で認証だけなのだそう。趣味で運営している bot を OAuth 対応にしなくてはならない!  6 月のときは W 杯の関係で Basic 廃止が 2 か月延びたのだけれど、今回はきっちり終わるみたい。 8 月 31 日の夜まで手をつけてないなんて、まるで夏休みの宿題を最後までやらない小学生みたい!

で、夕飯後作業開始。

いろいろ bot の仕様を自分でつくっていたので、今回は Basic 認証で tweet していた関数を OAuth 認証で tweet する関数に置き換えることにしました。条件としては、ライブラリ等のインストールがなるべく少なくてすむ方法にしました。

大きな流れは下記のよう。

  1. twitter にアプリケーション登録
  2. OAauth 用アクセストークンの取得
  3. twitter への投稿部分関数の作成(コピペ?)

ちなみに、 OAuth ってなんなのよ、って話だけれど、直接、 ID と パスワードを渡すんじゃなくて、間に何か(アクセストークン)挟むから、安全ってことらしい。例えば、外部のサービスでも twitter のアカウントとパスワードを直接預けなくても使えるようになるらしい。こんな認識なんですが、間違ってたらご指摘ください。

twitter にアプリケーション登録

Consumer key と Consumer Secret を得るのが目的。
下記のページを開いて「新しいアプリケーションを追加 »」をクリックすると「アプリケーション登録申請」という画面が出てきます。
→ twitter にアプリケーション登録

適当に空欄を埋めていく。大事なのは下記。

  • アプリケーション名:適当な名前をつける。 Basic 認証のときは「 API 」になっていたところが好きな名前に変更できます。(もう他の人が取得している名前は登録できません。)
  • アプリケーションの種類:クライアントアプリケーションを選択。コールバックしなくていいから。
  • Default Access type : Read & Write を選択。つぶやく必要があるから。

20100901_1.png

保存をすると Consumer key と Consumer Secret が発行されます。

20100901_2.png

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 つ)が取得できます。

20100901_3.png

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

関連記事

コメント (4)

  • たまりか

    こんばんわ~。
    どうでしょう bot つくられてたんですね~。
    我がきたたんは初め、最後に書かれている EasyBotter さん使わせて頂いてたんですよ。
    でもね、クロン付きのサーバーとか無料でなくって、ドイツの無料クロン使ってたら、どうも日本からの登録は削除されてしまったようで><
    google のクロンも敷居が高くてw現在はこちらでお世話になっています→ http://twittbot.net/ twitter ボットジェネレーター
    簡単で難しくない上にちゃんと動く ( 多少の誤差はあるかも ) ので、全くの素人さん&ドイツのクロンで泣かされてた人 ( 私のことだw ) にはおすすめですw
    有料版だと via も書き換えられるみたい♪
    どうでしょう bot 探してきます ( ´∀` *) ノシ

  • あさこん

    ◇たまりかさん◇
    実はひっそりと運営してました。
    きたたん 1st も EasyBotter だったのですね!
    そういった便利なものがなかった時代につくったものなので、
    投稿するプログラム以外は適当に書いてたんですよ。

    cron はサーバーに負担がかかるからか、
    無料のところではサービス提供してませんね。
    有料のところでも負荷がかかりすぎるとと止められたりしますから。
    わたしは月額 200 円代の激安サーバーを使ってますが、
    日に約 3 回しかつぶやかないので、それなりに動いています。

    twitter ボットジェネレーターなんていうサイトがあるのですね。
    複数行をまとめて登録できるのはいいかも!
    (昔も 1 つぶやきごとに登録するのはあったのですが、
     登録と設定が面倒で見送りました。)
    bot をやり始めたころにあったら使っていたかもです。

  • directoryrdy

    丁寧なご説明、ありがとうございます。

  • あさこん

    ◇ directoryrdy さん◇
    コメントありがとうございます。
    お役に立てたようでなによりです。

コメントを書く

トラックバック URL