SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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/

関連するメモ

コメント