【facebook】ページの投稿をするアクセストークンを取得する
facebookページに投稿をするボットなどを稼動させていると、そのうち以下のようなエラーとなります。
{ "error": { "message": "Error validating access token: Session has expired at unix time 1351138534. The current unix time is 1352848421.", "type": "OAuthException", "code": 190, "error_subcode": 463 } }
facebookの仕様変更で、無期限の offline_access が廃止されて、長くて有効期限60日のアクセストークンしかもらえなくなりました。改めてアクセストークンの取得が必要となります。
以下、手作業で有効期限60日のアクセストークンをもらう手順のメモです。
1、通常の有効期限の短いアクセストークンをもらう(有効期限1,2時間)
以下のようなURLにアクセス。
https://www.facebook.com/dialog/oauth? client_id=[App ID/API Key]& redirect_uri=https://www.facebook.com/connect/login_success.html& response_type=token& scope=publish_stream,manage_pages
以下のようなURLにリダイレクトされる。
https://www.facebook.com/connect/login_success.html#access_token=アクセストークン&expires_in=6811
最初のURLのredirect_uriを変えると、リダイレクト先を変更できて、自身のWebサイトなどへ連れてきて処理を続行したりできる。
2、有効期限の長いアクセストークンをもらう(有効期限60日間)
以下のURLにアクセスする
https://graph.facebook.com/oauth/access_token? client_id=[App ID/API Key]& client_secret=[アプリのシークレットキー]& grant_type=fb_exchange_token& fb_exchange_token=[1の通常のアクセストークン]
レスポンス本文の方に、以下のような形式でアクセストークンが返ってくる。
access_token=長期間有効のアクセストークン&expires=5184000
この長期間有効のアクセストークンの方をfacebook投稿ボットなどに持たせておくと、2ヶ月ぐらいは投稿できるでしょう。
参考
https://developers.facebook.com/docs/howtos/login/extending-tokens/
コメント