【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に有効期間があるということは、無効になってしまった時のエラーハンドリングをしっかりしなければいけない、ということを肝に銘じました。