OAuth認証
twitterのOAuth認証は難しい。私が何も分かっていない中で、完全な手順を網羅したブログを探せども探せどもないのだから、解決は難しい。あきらめるか、腹をくくって、一から情報を自分のものにしながら進めるかのどちらかしかない状態だ。暇ではないが、プログラムが出来るか否かというのは、今後非常に重要だと僕は最近やっぱり思っている。営業は大体できるようになった。アイデアは考えるのはタダで、考えるのも好きな方だ。あとは語学力とプログラム能力なのだ。語学はそりゃやるとしても、プログラムは腹をくくらないと出来ない。あと5年で34歳だ。それまでにプログラムもプロ並みになっておこう。ということで、今日は一からOAuth認証を倒すために、コツコツコツコツと調べていきたいと思います。急がば回れの精神で進めたいと思います。
http://www.atmarkit.co.jp/fsecurity/special/106oauth/oauth02.html
上記はOAuth認証のプロトコルのフローを説明している。大きく3つに分けられるようだ。
①コンシューマ登録、②リクエストトークン要求とユーザの同意確認、③アクセストークン要求とAPI接続
①コンシューマ登録はtwitterの場合分かりやすく、解説ページも至る所にあるので問題ない。それに作業が完全に分離されている。問題は、②③の流れがPHPのOAuth認証サンプルコードのどこにあたり、サンプルコードの後でどういったプログラムを組む必要があるのかについて、全く認識/想像ができない点だ。よって、②③の流れをしっかりと把握しつつ、サンプルコードのソースの意味を把握する必要がある。今日はこれに3時間使おう。3時間じゃ終わらないだろうが。。
(1) ユーザーはコンシューマのサービスを利用するために、Webブラウザでコンシューマにアクセスする。
(2) コンシューマはユーザーからサービスプロバイダのリソースを利用する意思を確認した後、サービスプロバイダに接続して「リクエスト・トークン」の発行を要求する。この際、コンシューマ・キーや、コンシューマ・シークレットを使って生成したサイン値などをパラメータとして渡す。
(3) サービスプロバイダはコンシューマから送られてきた値を確認した後、未承認の(Unauthorized)リクエスト・トークンをコンシューマに返す。
(4) 未承認のリクエスト・トークンを受け取ったコンシューマは、リクエスト・トークンにユーザーの承認を取るために、未リクエスト・トークンとともにユーザーをサービスプロバイダにリダイレクトする。
(5) サービスプロバイダはまずユーザーにログインを要求し、クレデンシャル(ユーザーIDやパスワードなど)を確認する。ユーザー認証が成功したら、ユーザーにコンシューマがアクセスするユーザーリソースの内容と条件を表示し、同意の確認を促す。
(6) ユーザーの同意が取れたら、リクエスト・トークンを「承認(Authorized)」にして、ユーザーとともにコンシューマへリダイレクトして返す。ユーザーが同意しなかった場合は「拒否(Denied)」にして返す。
(1) コンシューマは承認済みのリクエスト・トークン、コンシューマ・キー、コンシューマ・シークレットで生成したサイン値などをパラメータとしてサービスプロバイダに送って、「アクセス・トークン」の発行を要求する。
(2) サービスプロバイダはコンシューマから送られてきたパラメータの値を確認し、問題がなければ、APIへの接続に必要なアクセス・トークンとそれを署名するのに利用する「トークン・シークレット」をコンシューマに返す。
(3) コンシューマはアクセス・トークン、コンシューマ・キー、トークン・シークレットで生成したサイン値などをパラメータとして送り、ユーザーリソースの入り口であるAPIに接続を要求する。
(4) サービスプロバイダはそれぞれのパラメータの値を確認し、問題がなければ、APIの応答データをコンシューマに返す。以後、サービスプロバイダがアクセス・トークンに付与した条件(リソースの種類・期間など)に応じて、コンシューマは(3)を繰り返してAPIを経由してユーザーのリソースにアクセスする。
TwitterでOAuth認証した後どうするか
TwitterでOAuth認証した後どうするかについて考えをつらつらまとめているページ
http://blog.fkoji.com/2010/02022354.html
twitter API開発でしっておくべきこと
しっておくべきことがまとめてあったので一応リンクしておく。あんまりたいしたことは書いていないようだが、たいしたことないことまで覚えてないとなるとそれはいかんぜよ。
Twitter APIで開発をするために知っておくべきこと
http://seolab.capoo.jp/twitter/api/twitter-api
twitter API
twitter APIは、難しいようで意外と簡単な仕組みのようだ。
Twitter REST API の使い方
http://www.ibm.com/developerworks/jp/xml/library/x-twitterREST/
このサイトは、非常に分かりやすくtwitterAPIの概要を説明してくれている。
Twitter Search API の使い方
http://www.ibm.com/developerworks/jp/xml/library/x-twitsrchapi/
こんなサイトもあるので、今度勉強しよう。
あと、twitterAPI仕様書の日本語訳がこれだ。
http://watcher.moe-nifty.com/memo/docs/twitterAPI49.txt
以上を読めば、大体分かるはずだ。しかし、twitterAPIはOAuth認証が必要で、今後Basic認証はNGになるので、OAuth認証への対応が必須である。これをマスターしないといけないので、勉強中だ。
Twitter APIとGAEでおもしろWebサービスを作ろう!
http://ascii.jp/elem/000/000/512/512629/
ゼロから分かる、GAE&Twitter API開発の始め方
http://ascii.jp/elem/000/000/514/514588/
サンプルコードで分かるGAE&Twitter API開発
http://ascii.jp/elem/000/000/517/517471/
PHP でTwitter APIのOAuthを使う方法まとめ
http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php
PHP+OAuthでTwitter
http://www.sdn-project.net/labo/oauth.html
PHP+OAuth でTwitter連携アプリを作る!(Botも作れるよ!) [準備編]
http://1tb.me/report/02
Twitter APIとPEAR::Services::Twitterで全フォロワーの情報を取得
http://d.hatena.ne.jp/hideack/20100417/1271462714
プログラミングができなくても作れるTwitter botの作り方
http://pha22.net/twitterbot/
Twitter REST API Method: statuses public_timeline
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-public_timeline
Using the Twitter API with PHP and PEAR
http://devzone.zend.com/article/4431