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

【facebook】access_tokenのexpire(有効期間)を延長する方法

facebookのaccess_tokenはデフォルトだと1~2時間ぐらいで無効になってしまい、再度access_tokenの取得が求められますが、「それはあまりにも短い!」という人のために、有効期間を延長する方法を提供しています。

公式ドキュメントを見る

こちらに載っている事がすべてでした。 https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

GET https://graph.facebook.com/oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 

このAPIにアクセスするだけです。
short-lived-tokenは、まだ有効期間が短い時のaccess_tokenを渡します。

すると、レスポンスがこのように返ってきます。

access_token=XXXXXXXXXXXXXX&expires=5162868

jsonでもなんでもなく、ただただテキストでこのように返ってきます。
なぜなのかは全くわかりませんが、めんどくさいことこの上ないです。

ちなみにaccess_tokenが新しく有効期間が延長されたaccess_tokenで、expiresが残りの有効時間(秒数)です。

延長期間の長さ

この方法を使用すると、1~2時間だった有効期間が約60日まで増えます。
144倍です。懐が深い。

備考

  • iOSとかAndroidとかのアプリのSDKから取得したaccess_tokenはデフォルトで60日間のaccess_token(短いaccess_tokenは基本的にWebアプリケーションだけ)

  • APIなどにアクセスする度に、有効期間はリセットされる?(ここよくわかっていない)

大事なこと

とはいえ、access_tokenに有効期間があるということは、無効になってしまった時のエラーハンドリングをしっかりしなければいけない、ということを肝に銘じました。