Facebookのアクセストークンとそれが引き起こす悲しみについて多くの質問があることは承知していますが、多くの実験とイライラするほど曖昧なブログ記事(FBなど)を読んでも、私のニーズに明確な答えを得るのに苦労しています。 。これまでのプロセスを簡潔に説明します。
そして、ここで私は立ち往生しています。私の60日間のキーは、サーバーからページから必要な情報を引き出すために正常に機能しますが、私が知る限り、その60日間のキーをプログラムで延長する方法はありません。また、手動でFacebook Graph API Explorerにアクセスして作成せずに、新しい短命のキーを生成する方法も知りません。
ユーザーベースのシステムではなく、Facebook APIにリクエストを送信するサーバーであるため(ユーザーがFacebookアプリを再度承認するように簡単にリクエストできる場合)、これは非常に不格好なシステムを作成します。 Facebookはoffline_access
、サーバーが自分のページから情報を取得する永続的な方法は本当にありませんか?本当に手動で新しいキーを作成し、60日ごとに手動でサーバーを更新する必要がありますか?
それとも私が見逃しているものがありますか?
更新:
以前にここで見つかったステップバイステップガイドは、独自の answer 。に移行されました
これらは以前に質問にあったステップです-それらはこの回答に移行されました。
有効期限のないFacebookページアクセストークンを(@Igyの助けを借りて)生成できることがわかったので、同じものを探しているすべての人のための明確なステップバイステップのクイッドを次に示します。
manage_pages
権限を必ず追加してくださいhttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
を取得しますExpires: Never
!に設定されていることを確認するトークンそれはそれを行う必要があります。次の場合を除き、有効期限が切れないFacebookページアクセストークンが必要です。
これらのいずれかにより、アクセストークンが無効になります。
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
を取得している場合は、 Access Token Debugger に移動し、User ID
の値をコピーして、ステップ9でURLの「me」部分を置き換えます。 。
これは オフラインアクセスの非推奨 ドキュメントで説明されています
ページ管理者に60日間のトークンを使用して、ページアクセストークンを取得します(/PAGE_ID?fields=access_token
または /me/accounts
)-ページアクセストークンの有効期限はありません
ステップバイステップガイドの@redhotvengeanceに感謝します。
しばらくして、Facebookのドキュメントに次のことが明確に説明されました。
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
ページアクセストークンの拡張
アプリは、manage_pages権限で認証されると、ページ管理ユーザーからページアクセストークンを取得できます。このページアクセストークンの取得に使用されるユーザーアクセストークンが短命の場合、ページアクセストークンも短命になります。
寿命の長いページアクセストークンを取得するには、上記のようにユーザーアクセストークンを寿命の長いトークンに交換し、ページアクセストークンを要求します。結果のページアクセストークンには有効期限がありません。
Facebookのアプリダッシュボードからコピーして貼り付けることもできます。手順:
ページの右上隅でアプリを選択します (外観の画像)
理論上はトークンの有効期限はありませんが、ログインしたFacebookアカウントに直接関連付けられていることに注意してください。したがって、パスワードを変更するか、アカウントとアプリの間からアクセス許可を削除すると、トークンは無効になります。