スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP/Twitter] BASIC認証で作っていた bot をなるべく簡単にOAuth認証へ切替えるための作業をまとめてみた

2013/06/11:確認したら自動ツイート止まってたので以下は古い情報です

以前 twitterで自動ツイート を行う bot を作成したと申しておりましたが、
そこで用いている BASIC認証が使えなくなるとのことで、なるべく簡単に移行作業を
行ってみようとした結果をまとめてみる。

本来論からいえば、APIの仕様書に目を通し、OAuth認証とは何かを理解し、
XAuth認証も検討し、自分の技術の糧にすべきかと思うのですが、
(時間的に余裕ある方はそうすることをおすすめします。今後、OAuthというか
 外部APIと認証情報をやりとりする技術はクラウド化において主要な基礎知識です)
軽い気持ちで作った、または少ない予算で作られた業者の方にとっては、
そういうところで時間をとられたくないというのも実情かと思います。

それでは以降、作業をまとめます。
長い記事になっていますが、順に追えば作業が進められるようにしています。

1)bot をアプリケーションとして登録しよう
2)キーのほかに OAuth認証に利用するトークンを取得しよう
3)サンプルコードをダウンロードして、ライブラリを取得しよう


上記の順に作業を進めます。



1)bot をアプリケーションとして登録しよう

Twitter / アプリケーション
http://twitter.com/oauth_clients

まず上記URLにアクセス。

OAuth認証を行うにおいて、twitter から発行されたキーを利用します。
そのキーを取得するために、上記URLにログインした状態でアクセスします。
(ログインは、できれば bot のアカウントでしておきましょう。違うアカウントでも
 問題ないように思うのですが、そのあたりで私の場合手間取ったので、
 bot のアカウントでアプリも登録しました。)

Twitter OAuth認証への変更作業その1

「新しいアプリケーションを追加」で先に進みましょう。

Twitter OAuth認証への変更作業その2

「登録申請」とありますが、特に twitter 側で審査を行うわけではありません。
登録してキーをいただくだけなので、気軽に登録しましょう。

bot の場合、ここに入力した内容があまり影響することがないので、
あまり神経質にならずにそれぞれの項目を登録していきましょう。

twitter を利用しているときに、「このアプリのアクセスを許可しますか?」のような
画面が表示されたことがありますか? その画面にこれらの項目(アイコンや説明)は
反映される(はず)です。bot の場合、自分が勝手に送信するはずですから、特に必要は
ないはずです。

@sengoku_tweet の場合、以下のように設定しました。


アイコン:
(twitter で用いているものと同じ画像)

アプリケーション名:
戦国呟介
 ※ツイートの際に表示されます。 例:「2分前 戦国呟介から」

アプリケーションの説明:
戦国武将の紹介をしたり、生活お役立ち知識をつぶやきますよ。
 ※自己紹介文とほぼ同じにしました。

アプリケーションのWEBサイトURL:
http://twitter.com/sengoku_tweet
 ※とりあえずこの bot のページにしました。

所属会社/団体:
(空)
 ※どこかに表示されるのかな? とりあえず空に。

サイト:
http://twitter.com/sengoku_tweet
 ※とりあえずこの bot のページにしました。

アプリケーションの種類:
ブラウザアプリケーション
 ※で、いいはず。

コールバックURL:
http://twitter.com/sengoku_tweet
 ※bot なので、ユーザが遷移する画面は考えなくていいはず。とりあえずURL関係の他のものと同じに。

Default Access Type:
Read & Write
 ※私もよく理解していないのですが、書き込み(ツイート)が発生するため、書き込みも行うと指定

Twitter でログインする:
「はい」にチェック
 ※これもよく理解していないのですが、ログインしてツイートするから「はい」だよね?


で、登録すると以下のような画面を確認できます。

Twitter OAuth認証への変更作業その3

アプリケーションとして登録されていますね。名前をクリックすると詳細が見られます。

Twitter OAuth認証への変更作業その4

一部モザイクが入っていますが、このキー( Consumer Key, Consumer Secret )が重要です。
この bot をアプリケーションとして認識するためのキーが発行されて表示されていますので、
これを OAuth 認証の際に用いることになります。どこかにコピペするなりしておきましょう。
キーの取得はここまでです。


2)キーのほかに OAuth認証に利用するトークンを取得しよう

OAuth認証の際には、上記の2つのキー( Consumer Key, Consumer Secret )のほかに、
トークンと呼ばれる文字列が2つ必要です。計4つの文字列を用いて認証を行うわけですが、
このトークンは前述の2つのキーを用いて問い合わせをして、トークンを得るのが正統な形の
はずです。

ただ、そうするとコードも少し手間がいりますので、ここはトークンを発行してもらって
それを決め打ちで使うことにしましょう。
やはり bot のアカウントでログインした状態で、下記のURLにアクセスしましょう。

Twitter Applications dev.twitter.com
http://dev.twitter.com/apps

Twitter OAuth認証への変更作業その5

アプリケーションの一覧が表示されるので、アプリケーション名をクリックして詳細画面に遷移します。
Twitter OAuth認証への変更作業その6

キーやらなんやら情報があって、先ほどのキーを取得した画面と変わらないように見えますね。
このページは重要ではありません。画面の右にある "My Access Token" というところをクリックします。
(上から三番目のリンクですね)

Twitter OAuth認証への変更作業その7

またモザイクをかけていますが、ここに表示された
"Access Token (oauth_token)"、"Access Token Secret (oauth_token_secret)" というのが
前述のトークンです。これもどこかにコピペしておきましょう。これを用いることで、
コードの中で毎回トークンを取得することなくこのトークンを用いて認証をかけることができます。
ここまでがトークンの取得です。これで準備は整いました。これからコードを修正していきます。


3)サンプルコードをダウンロードして、ライブラリを取得しよう

いちから OAuth認証を行うコードを書くのはたいへんなので、
こちらのサンプルコード利用させていただきましょう。

abraham's twitteroauth at master - GitHub
http://github.com/abraham/twitteroauth

メニューの downloads をクリックして以下のページへ。

http://github.com/abraham/twitteroauth/downloads

ここでは最新の 0.2.0-beta3 を使うことにします。
ダウンロードして解凍するといろいろファイルが展開されます。わかりやすいサンプルも
ついているので読んでいるとためになるかと思うのですが、とりあえず OAuth に対応したい
だけの人は作業を進めましょう。解凍した中に twitteroauth というフォルダがありますので、
そこの中のファイルを利用します。

OAuth.php
twitteroauth.php


この2ファイルをライブラリとして利用することとします。
twitteroauth.php からは OAuth.php が require_once されているので、
bot のスクリプトからは twitteroauth.php のみ呼び出すことにします。

以下のようなサンプルで動作を確認しましょう。


//ライブラリ読み込み
require_once('twitteroauth.php');

// twitterで登録してもらえた Consumer key
$consumer_key = 'hogehogehogehogehogehogehoge';
// twitterで登録してもらえた Consumer Secret
$consumer_secret = 'hoge2hoge2hoge2hoge2hoge2hoge2';

// http://dev.twitter.com/ で取得した Token
$oauth_access_token = 'hoge3hoge3hoge3hoge3hoge3hoge3hoge3';
$oauth_access_token_secret = 'hoge4hoge4hoge4hoge4hoge4hoge4hoge4';

//APIキーそのほか情報でもって TwitterOAuth のオブジェクトを生成する
$to = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret);

// Twitter へ POST
$req = $to->OAuthRequest(
"https://twitter.com/statuses/update.xml",
"POST",
array("status"=>"これは OAuth の認証により行われた ツイート POSTです。")
);
?>


ややこしい部分をライブラリに頼っているので動作としてはシンプルです。
前述の2ファイルをこのスクリプトと同じ位置(ディレクトリ)に置いて、このスクリプトを
叩いてツイートが反映されるか確認しましょう。

もちろん、hoge と書いてあるダミー部分は 1) 2) の作業でコピペしたものを
使ってくださいね。

動作が確認出来たら、いまの bot で BASIC認証を使って送信している部分を
置き換えれば修正完了です。

[BOT 武将のひとこと] 荒木氏綱 曰く、「『デジタル』も『アナログ』も全てが繋がる情報管理術」 http://r.nanapi.jp/2251/less than a minute ago via 戦国呟介



「less than a minute ago via 戦国呟介」と入ってますね。




参考にしたサイト:

TwitterにOAuthクライアントアプリを登録する方法
http://h2plus.biz/blog/2009/10/26/380/

これでデベロッパーの手間激減!自分のoAauth用アクセストークンの取得が簡単に!
http://tweeter.jp/2010/04/29/twitter-2275.html

twitter/PHP でつぶやき投稿(OAuth認証)
http://hodade.adam.ne.jp/itmemo/index.php?twitter%2FPHP%A4%C7%A4%C4%A4%D6%A4%E4%A4%AD%C5%EA%B9%C6%A1%CAOAuth%C7%A7%BE%DA%A1%CB

PHP でTwitter APIのOAuthを使う方法まとめ - 頭ん中
http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php

2010/05/17 追記:
なんか日本語変なのでタイトル修正しました。

拍手コメントありがとうございます。うまく移行できましたでしょうか?
お役に立てたのであれば幸いです。

2010/08/31 追記・加筆:
ちょっと見やすくしたり、補足などしました。
ワールドカップで切り替えは伸びていましたが、どうやら9/1にBASIC認証が
使えなくなるという情報が。

今夜9月1日午前0時にtwitterのベーシック認証がサービス終了 – 果たしてどのサービスが使えなくなる?
http://tweeter.jp/2010/08/31/twitter-4095.html

Basic Auth Shutdown | dev.twitter.com
http://dev.twitter.com/pages/basic_auth_shutdown
On August 31st, 2010, the @twitterapi team will be shutting off all basic authentication on the Twitter API ― you can see the announcement here (and, this has been previously announced). All applications, by this date, need to switch to using OAuth.



Twitter API プログラミングTwitter API プログラミング
(2010/04/21)
辻村 浩

商品詳細を見る


Twitter!―Twitter APIガイドブックTwitter!―Twitter APIガイドブック
(2007/09)
辻村 浩

商品詳細を見る
関連記事
スポンサーサイト

テーマ : Twitter
ジャンル : コンピュータ

タグ : twitter bot OAuth PHP

comment

管理者にだけメッセージを送る

バッチリ

バッチリ動きました。
とても助かりました。ありがとうございました。^^

Re: バッチリ

それはなによりですヽ(´ー`)ノ
検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。