TwitterAPI
出典: JUDSTYLE
twitterにアクセスするツールを作るにあたって必要な twitterAPI に関する情報のメモ。
目次 |
twitterAPI
(stub)
BASIC認証
BASIC認証でtwitterAPIに手っ取り早くアクセスする方法は、cURLを使うこと。
- ただし、BASIC認証を用いたtwitterAPIへのアクセスは2010/6/30をめどに停止されるというアナウンスがされており、今後BASIC認証は使用できなくなることには注意が必要だ。 - JUD 2010年5月27日 (木) 14:01 (JST)
解説
実装
cURLのBASIC認証設定を使えば、頭を使うところはほとんどない。
$URL = "http://twitter.com/statuses/friends_timeline.xml?count=20"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $URL); curl_setopt($ch, CURLOPT_USERPWD, $name.":".$password); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $TM = curl_exec($ch); curl_close($ch);
OAuth
OAuthは、twitterが推奨する認証方式。twitterに対するアクセス権を他サイトやアプリに委譲することで、BASIC認証を使用した際に問題となる『パスワードそのものをtwitter以外のサイトに渡すリスク』を回避するためのもの、と解説されることが多い。
解説
詳細の解説はいつもどおりWikipediaが無駄に詳し・・・いと思ったらあんまり詳しくないけど、とりあえずおいておく。
OAuthの仕組みについては真武信和氏の解説がある。
PHPで使うための解説については頭ん中の解説が比較的わかりやすい。
認証関連技術について日本語で詳しい解説があまりない、という例はOAuthにも当てはまっているわけだが、それにしても少ない。しかもいろいろな解説があって、実際にやってみるまではどれくらいの手間がかかるのかよくわからないという現状。というのも、最終的なアクセス権はOAuthでは「AccessToken/AccessTokenSecret」であるわけだけど、これを手に入れるまでの方法が何種類かあるというのがその理由のひとつ。
xAuth
OAuthでは本来2-legs、前述の解説サイトの通りProviderにユーザを誘導し、アクセス許可後に戻ってきてもらう方法が望ましいが、ITMediaの記事にあるように携帯電話(Cookieに対応していないハードがあったり、描画能力の問題で認証すらおぼつかないこともある)などでは『xAuthは例外的な対応』としながらも1-legでのアクセス方法を使うことができる。
概要
OAuthでアクセスするにはは最終的に以下の4つのキー・トークンが必要となる。
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
本来コンシューマはConsumer Key/Secretを持ち、都度Providerから取り寄せるRequestTokenをもとに最終的にAccess Token/Secretを獲得するのが本筋である。しかしその場合、ユーザはProvider(ここではおそらくtwitter)の認証画面を表示するためにセッション管理をせねばならず、そうなるとcookieを保持できないブラウザでは不可能になってしまう。そのため、AccessTokenを取得したら保持しておき、RequestTokenを経由してAccessTokenを取得する作業を毎回は行わないようにする手法がxAuthである。
影響
- AccessToken/Secretはパスワードにより変化らしい(検証中)。よって、パスワードを変更した後はAccessTokenの再取得をする必要がある。
- AccessToken/Secretを常に(ユーザに紐付けるなどして)保持しているため、安全性に劣る。
ライブラリ
公開されているライブラリについてはいくつかある。
twitteroauth
abraham氏が作成してGitHubにて公開しているtwitteroauthは、xAuthでアクセスするためのライブラリ。ConsumerKey/SecretとAccessToken/Secretを全て予め用意して、完全なアクセス権をアプリに与える最も簡単な手段。
twitteroauthのコアはtwitteroauth.phpで、OAuth.phpと2ファイルでtwitterとのOAuthアクセスをPHPスクリプトに提供している。このライブラリを使用して通信するためにはtwitterに登録した4つの情報が必要になっている。これら情報はtwitterやdev.twitterから取得してくるわけだが、その保持情報は呉々も漏らさないようにしなくてはならない。
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
