簡単に言うと、"OAuth WRAPの仕様でtwitterのデータにアクセスできるようにしました"って感じです。
(3/8 追記:ちなみに、Web App Profileです。)
TOWRAP! URL : https://r-weblife.sakura.ne.jp/towrap/
DEMO CLIENT : http://r-weblife.sakura.ne.jp/php-towrap-client/
きっかけはこちらです。
twitterがOAuth WRAPの導入を検討しているらしいなんてことを聞きつけたので、中のひとたちより一足先に仕様にのっとって作ってみようかと。
OAuth WRAPの仕様にのっとったエントリポイント一覧はこちらです。
- User Authorization URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/get_auth
- Access Token URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/get_token
- Refresh Token URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/refresh_token
APIアクセスもできないとねってことで、OAuth WRAP形式のリクエストを内部でOAuthのリクエストに変換してtwitter APIをたたく機能を用意しました。
このAPIは、内部でhttp://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-home_timelineを叩いています。
しかし、私の不手際によりどうしてもAPIレスポンスが遅いので、user_idとscreen_nameだけ返すのも用意しました。
あとは、Client IDを発行/登録したりするページを作りました。
- Client ID発行(登録)ページ : https://r-weblife.sakura.ne.jp/towrap/cidReg
- Client ID管理ページ : https://r-weblife.sakura.ne.jp/towrap/cidMgr
- Refresh/Access TokenをRevokeできるページ : https://r-weblife.sakura.ne.jp/towrap/credMgr
現在、フローや画面仕様をまとめたドキュメントを作成中ですが、速報?として簡単に書いておきます。
OAuth WRAPの仕様見たことあって勘のいい人はこれでだいたいは把握してもらえるはず。
■ User Authorization要求
以下のパラメータを付加したURLにUserをリダイレクトさせてください。
User Authorization URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/get_auth
リクエストパラメータ
- wrap_client_id
- wrap_callback
- wrap_client_state(option)
Userは最初に、twitterまで行ってTOWRAP!に対するOAuthの同意を求められます。
純正じゃないんだからしょうがないですよね。
そのあと、TOWRAP!の同意画面が出ます。
ユーザーが同意すると、こんなレスポンスがIndirect Communicationで返されます。
成功時のレスポンスパラメータ
- wrap_verification_code
- wrap_client_state(option)
■ Access Token取得要求
Access Token URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/get_token
リクエストパラメータ(POST)
- wrap_client_id
- wrap_client_secret
- wrap_verification_code
- wrap_callback
成功時のレスポンスパラメータ
Access Tokenの有効期限は1時間にしてます。
■ APIアクセス
仕様ドキュメントで"Client Calls Protected Resource Using URL Parameter"として定義されている形式のみサポートしています。
GETパラメータでAccess Tokenを指定します。
リクエストパラメータ(GET)
- wrap_access_token
それ以外のパラメータ/レスポンスはhttp://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-home_timelineを参照。
■ Access Token更新要求
Refresh Tokenを用いてAccess Tokenを更新します。
Refresh Token URL: https://r-weblife.sakura.ne.jp/oauthwrap/v0/refresh_token
リクエストパラメータ(POST)
- wrap_client_id
- wrap_client_secret
- wrap_refresh_token
成功時のレスポンスパラメータ
とりあえず、今回はこの辺にして、ドキュメントがまとまったらまたシェアします。