読者です 読者をやめる 読者になる 読者になる

blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

FacebookのOAuth AccessTokenについて

Facebook GraphAPIを使用するにはAccessTokenが必要です。
AccessTokenの有効期限はデフォルトで2時間、延長用のAPIを使用すると、有効期限が2ヶ月のAccessTokenを取得できます。

AccessToken取得用API

codeの取得

https://graph.facebook.com/oauth/authorize
?client_id=APPLICATION_ID
&redirect_uri=REDIRECT_URI
&scope=SCOPE

APPLICATION_IDには、GraphAPIにアクセスするアプリのIDを、
scopeには必要なSCOPEをCSVで指定します。
scopeについて:https://developers.facebook.com/docs/authentication/permissions/
このAPIにブラウザからアクセスすると、REDIRECT_URIにcodeというパラメータ付きでリダイレクトされます。
AccessTokenの取得にcodeを使用します。

有効期限が2時間のAccessTokenを取得

https://graph.facebook.com/oauth/access_token
?client_id=APPLICATION_ID
&client_secret=APPLICATION_SECRET
&redirect_uri=REDIRECT_URI
&code=/oauth/authorizeにて取得したcode

APPLICATION_ID,APPLICATION_SECRETにはGraphAPIにアクセスするアプリのIDとSECRETを、
codeには/oauth/authorize APIにて取得したcodeを指定します。
このAPIにWebアクセスすると、Response BodyにAccessTokenが返ってきます。

有効期限が2ヶ月のAccessTokenを取得

https://graph.facebook.com/oauth/access_token
?client_id=APPLICATION_ID
&client_secret=APPLICATION_SECRET
&grant_type=fb_exchange_token
&fb_exchange_token=有効期限が2時間のAccessToken

上記APIにて、AccessTokenの有効期限を延長できます。
有効期限が2時間のAccessToken取得時と同様に、Response Bodyに有効期限が2ヶ月のAccessTokenが返ってきます。

AccessToken取得用プログラム

https://gist.github.com/4617012
$client_id,$client_secret,$redirect_uriに適切な値をセットしてWebサーバ上に設置し、
ブラウザからアクセスすると、有効期限が2ヶ月のAccessTokenを取得できます。

AccessTokenの有効期限を確認

https://developers.facebook.com/tools/debug
上記ツールにて、AccessTokenの有効期限を確認できます。

AccessTokenの有効期限について

記事冒頭にて、AccessTokenの有効期限はデフォルトで2時間、延長して2ヶ月と書きましたが、
AccessTokenが無期限になるような条件もあるようです。
http://developers.facebook.com/docs/howtos/login/extending-tokens/
上記URLのページの「Extending Page Access Tokens」を参照
下の画像のように、Expires: Never となります

f:id:oh-sky:20130124155915p:plain