web-dev-qa-db-ja.com

FBページ情報を取得するためのサーバー用の長続きするFBアクセストークン

Facebookのアクセストークンとそれが引き起こす悲しみについて多くの質問があることは承知していますが、多くの実験とイライラするほど曖昧なブログ記事(FBなど)を読んでも、私のニーズに明確な答えを得るのに苦労しています。 。これまでのプロセスを簡潔に説明します。

  • サーバー側で、単一のFacebookページから投稿/ステータスを取得する必要があるサイトを作成しています
  • 私はそのFacebookページの管理者です
  • Facebookアプリを作成しました
  • Facebook Graph API Explorer を使用して、ページのアクセストークンを表示する権限をアカウントに付与する、アプリとアカウントに接続された短命のキーを生成しました
  • this から短期間キーを長寿命キー(60日)alaシナリオ4に変換しました

そして、ここで私は立ち往生しています。私の60日間のキーは、サーバーからページから必要な情報を引き出すために正常に機能しますが、私が知る限り、その60日間のキーをプログラムで延長する方法はありません。また、手動でFacebook Graph API Explorerにアクセスして作成せずに、新しい短命のキーを生成する方法も知りません。

ユーザーベースのシステムではなく、Facebook APIにリクエストを送信するサーバーであるため(ユーザーがFacebookアプリを再度承認するように簡単にリクエストできる場合)、これは非常に不格好なシステムを作成します。 Facebookはoffline_access、サーバーが自分のページから情報を取得する永続的な方法は本当にありませんか?本当に手動で新しいキーを作成し、60日ごとに手動でサーバーを更新する必要がありますか?

それとも私が見逃しているものがありますか?

更新:

以前にここで見つかったステップバイステップガイドは、独自の answerに移行されました

112
redhotvengeance

これらは以前に質問にあったステップです-それらはこの回答に移行されました。

有効期限のないFacebookページアクセストークンを(@Igyの助けを借りて)生成できることがわかったので、同じものを探しているすべての人のための明確なステップバイステップのクイッドを次に示します。

  1. あなたが情報を引き出すFBページの管理者であることを確認してください
  2. FBアプリを作成します(ページ管理者と同じユーザーアカウントを使用する必要があります)
  3. Facebook Graph API Explorer に進みます
  4. 右上の[アプリケーション]ドロップダウンリストから作成したFBアプリを選択します
  5. 「アクセストークンを取得」をクリックします
  6. manage_pages権限を必ず追加してください
  7. 次のGraph API呼び出しを行うことにより、この短命のアクセストークンを長寿命のトークンに変換します: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>
  8. 返された新しい長命のアクセストークンを取得する
  9. Graph API呼び出しを行って、新しい長期間有効なアクセストークンを使用してアカウントを確認します:https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. 情報を取得するページのaccess_tokenを取得します
  11. LintExpires: Never!に設定されていることを確認するトークン

それはそれを行う必要があります。次の場合を除き、有効期限が切れないFacebookページアクセストークンが必要です。

  • Facebookアカウントのパスワードを変更します
  • ターゲットページの管理者アクセスを失います
  • Facebookアプリを削除または認証解除する

これらのいずれかにより、アクセストークンが無効になります。

(#100) Tried accessing nonexisting field (accounts) on node type (Page)を取得している場合は、 Access Token Debugger に移動し、User IDの値をコピーして、ステップ9でURLの「me」部分を置き換えます。 。

182
redhotvengeance

これは オフラインアクセスの非推奨 ドキュメントで説明されています

ページ管理者に60日間のトークンを使用して、ページアクセストークンを取得します(/PAGE_ID?fields=access_token または /me/accounts)-ページアクセストークンの有効期限はありません

15
Igy

ステップバイステップガイドの@redhotvengeanceに感謝します。

しばらくして、Facebookのドキュメントに次のことが明確に説明されました。

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

ページアクセストークンの拡張

アプリは、manage_pages権限で認証されると、ページ管理ユーザーからページアクセストークンを取得できます。このページアクセストークンの取得に使用されるユーザーアクセストークンが短命の場合、ページアクセストークンも短命になります。

寿命の長いページアクセストークンを取得するには、上記のようにユーザーアクセストークンを寿命の長いトークンに交換し、ページアクセストークンを要求します。結果のページアクセストークンには有効期限がありません。

1
Athlan

Facebookのアプリダッシュボードからコピーして貼り付けることもできます。手順:

  1. https://developers.facebook.com に移動します

  2. ページの右上隅でアプリを選択します (外観の画像)

  3. 左側のオプションから[メッセンジャー]をクリックします(自動的に設定に移動します) (外観の画像)
  4. ページの「トークン生成」セクションに移動します。トークンを生成するページを選択します。 (そのセクションの外観の写真)
  5. ページトークンをコピーして、必要な場所に貼り付けます。

理論上はトークンの有効期限はありませんが、ログインしたFacebookアカウントに直接関連付けられていることに注意してください。したがって、パスワードを変更するか、アカウントとアプリの間からアクセス許可を削除すると、トークンは無効になります。

0
Heidi