サーバーがFBページ情報をプルするための長期のFBアクセストークン


114

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

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

そして、ここで私は行き詰まっています。私の60日間のキーはサーバーがページから必要な情報をプルするために正常に機能しますが、私の知る限り、その60日間のキーをプログラムで拡張する方法はありません。また、手動でFacebook Graph API Explorerに移動して作成することなく、新しい有効期間の短いキーを生成する方法もわかりません。

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

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

更新:

以前ここにあったステップバイステップガイドは、独自の回答に移行されました。


これは素晴らしいです。私も同じ状況で、このトピックに関する情報を探していました。このトークンがFBプラットフォームのポリシーに違反しないことは安全ですか?確認を求めています。
onigunn 2012

2
@asrijaal Facebook自身のドキュメント(シナリオ5をご覧ください)では、これらのページアクセストークンに有効期限はありません。Facebookのポリシーに準拠していると想定しても安全だと思います。
redhotvengeance 2012

「明確な段階的なプロセスを残しておくのは良いことだと思いました」-天国は禁止します:)ありがとう@redhotvengeance
Steve McGill

ページアクセストークンのURLのタイプミスがあります。する必要がありますか?&アフターアカウントではありません。なぜこれが機能しないのかを理解するためにしばらく過ごした。:P
ヨレン

@Joren Indeed-現在は修正されています。ありがとう!
redhotvengeance 2013

回答:


188

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

(@Igyの助けを借りて)有効期限のないFacebookページアクセストークンを生成することが可能であることがわかったので、同じものを探しているすべての人のための明確で段階的な手順を次に示します。

  1. あなたが情報を引き出したいFBページの管理者であることを確認してください
  2. FBアプリを作成します(ページ管理者と同じユーザーアカウントである必要があります)
  3. 頭の上のFacebookグラフAPIエクスプローラ
  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. トークンをリントして、トークンがExpires: Never

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

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

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

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


2
ステップ6をどこでどのように行うのですか?
ステファン・ミュラー

5
@StefanMüllerGraph API Explorerページで[Get Access Token]をクリックすると、[Select Permissions]ダイアログがポップアップ表示されます。manage_pagesオプションは、下にあるExtended Permissionsタブ。
redhotvengeance 2014年

2
すごい!これは魅力のように機能し、ユーザーとしてではなく、ページとして公開されます。
Benjamin Piette 14

3
これは今では時代遅れだと思います。約2か月で期限切れになるアクセストークンのみを取得します。
Qaiser Wali 2014

7
私はこれをすべて実行しましたが、長寿命のトークンIDが2か月後に期限切れになり、無限ではないことを除いて、機能します。また、Acces Token Debuggerには、フォームの下部に、有効期間が短いアクセストークンを有効期間が長いアクセストークンに拡張するためのリンクがあります。
SlimIT 2015年

15

これは、Offline Accessの非推奨ドキュメントで説明されています

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


5
はぁ。確かに、これはチケットのようです。私はこれらのステップの可能なすべての組み合わせを試したことを誓ったかもしれません-どうやら実際に機能するものを逃したようです。必要なアクションの絶対に複雑なセット。あなたの助けをありがとう!
redhotvengeance 2012

1
インターネット上には非常に多くの作品があり、これは実際に機能するものです。
Ernesto

page_access_tokenJavaScriptのコードでこれを60日間取得する方法はありますか?取得方法のようにuser_access_token> FB.getAuthResponse()['accessToken'];ありがとう!
チューロン

3

2019年に機能するアプローチ

私は最近(このスレッドで説明されているユースケースと同様)何かを達成しようとしていましたが、Facebookの現在のポリシーを尊重するようにしたかったので、少し調査を行い、ここで見つけたものを共有します。

私のユースケース

したがって、すでに述べたように、私のユースケースはここで説明したものと非常に似ています。あれは:

  • 学区で仕事をしています。
  • 彼らは学校の交通機関に関連するほとんどすべてを管理するためにソフトウェアツールを使用しています。
  • このツールを使用すると、バスの遅延アラートと学校の閉鎖のアラートを発行するときに、(加入者に)電子メール通知を送信できます。
  • コミュニティの多くの人々がFacebookページで組織をフォローしており、それがアラートを探す唯一の場所です。
  • したがって、組織の従業員は、各通知をFacebookページに手動で公開する必要があります(交通機関ソフトウェアでの作成に加えて)。さらに、これらの通知は最終的に期限切れになる(または期限切れになる前に削除される)ため、従業員は後で戻って手動で削除する必要もあります。
  • それは時間の腰なので、ここでやろうとしているのは、ソフトウェアツールのデータベースを定期的にポーリングして新しい(および期限切れの)通知を求め、Facebookページでそれらを更新(つまり、追加と削除)する単純なシステムを開発することです。

これは私の見解では正当なユースケースですが、Facebookのポリシーに沿った方法で実装する方法はわかりませんでした。

受け入れられた答え

受け入れられた回答の手順に従いましたが、動作が変わったことを除いて機能しました。生成されたページトークンが期限切れになっaccess to dataていなくても、約60日後に期限切れになります。手順に従って、FB Token Debugger Toolでページトークンを検査すると、同様に表示されます。

さらに、ユーザーが自分のパスワードを更新するとページトークンも無効になるため、生成されたページトークンがユーザーアカウントに関連付けられていることも残念です。

2019年にそれを行う方法

数時間の調査の後、私は次のFacebookドキュメンテーション記事に出会いました:Business Login for Direct Businesses

上記の記事で説明した手順に従って、特定のFacebookユーザーアカウントに関連付けられておらず、期限が切れないページトークンを生成できるようになったことがわかります(FBアプリが削除されるか、基になるアプリケーショントークンがない場合)削除されます、あなたは知っています...)

手順と最も重要な部分は次のとおりです。

  • Business Managerアカウントが必要です。
    • 確認が必要で、デジタル契約に署名する必要があります。
  • そのアカウントにターゲットFacebookページを追加する必要があります。
  • Facebookアプリを作成し、そのアプリを同じBusiness Managerアカウントにも転送する必要があります。
  • 次の権限が必要になるため、アプリはFacebookのレビュープロセスを実行する必要がmanage_pagesありpublish_pagesます。
    • 重要な注意点生成ページトークンを使用して作成された投稿をアプリケーション管理者以外のユーザーに表示するには、そのアプリを公開して承認する必要があります。
    • レビューのために送信せずにコンセプトを試すことはできますが、投稿は公開されません。
  • Business Managerアカウントで(アプリとページがアカウントに追加された後のみ)、システムユーザーと呼ばれるものを作成する必要がありますし、そのユーザー管理ロール(または権限)をターゲットFacebookページに付与する必要があります。
    • システムユーザーはBusiness Managerアカウントによって所有され、特定のユーザーに関連付けられていません。私の現在の理解では、システムユーザーの1つの主な使用例は、FacebookのGraph APIへのプログラムによるアクセスです(必要なものだけ)。
  • 次に、そのシステムユーザーに対して、アクセストークンを生成する必要があります(有効期限はありません)。アプリを選択するように求められます。次に、ターゲットアプリを選択します。
  • 次に、生成されたアプリトークンを使用してページトークンを生成する必要があります。これも期限切れになることはありません。手順はこの記事では次のように説明されています
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
  • それでおしまい。

このトークンは期限切れになることはなく、特定のFacebookユーザーに関連付けられることもないため、まさにそれが必要です。

最後の部分は、FacebookアプリがFacebookによって承認されるようにすることです。人々が私たちの投稿を見なければ、全体の手順は価値がないので、それは実際に最も重要な部分です。

私は上記の手順に頼ってFacebookが最終的に拒否することなくクライアントのために何かを構築できることを確認したかったので、事前に(つまり、クライアントのプロジェクトに取り掛かる前に)、ページ、アプリ、Business Managerアカウントなどを作成しています。ビジネスを確認しました。アプリを審査のために送信しました。私のリクエストでは、私はユースケースについて非常に具体的であり、アプリは「自己使用」用であることを強調しました(つまり、組織は他のFacebookユーザー向けではなく、自社でアプリを開発している)。24時間も経たないうちに承認されました。

アプリレビュープロセスに関するその他の注意事項:

  • アプリのプラットフォームを選択する必要があったため、ウェブサイトを選択しました。
  • アプリに2つのアクセス許可が必要な理由と、それをどのように使用するかを示す必要がありました。
  • レビュー担当者がアプリにサインインしてそれを試すことができない理由を示す必要がありました(つまり、アプリがワーカープロセスで使用されるため)。
  • 必須のスクリーンキャストについては、ターミナルでの手動操作を、 curl(ページトークンを生成してFacebookページに投稿するための)ユーティリティ。また、Business Managerを使用してシステムユーザーをページにリンクし、トークンを生成する方法なども示しました。
  • 繰り返しになりますが、私は自分のユースケースについて非常に具体的であり、それが役に立ったと思います。

この情報が同様のユースケースを持つ人々に役立つことを願っています。


1

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

しばらくして、Facebookのドキュメントに明確に記載されました。

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

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

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

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


0

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

  1. https://developers.facebook.comにアクセスます

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.