Facebookにビジネスページがあります(Facebookではファンページとして知られています)。
ユーザーがアプリで特定のアクションを実行するたびにpost to that Page
したいと思います。ユーザーではなく(つまり、個人アカウントから)ページ自体として投稿したい。投稿は外部サーバーから送信されます(私はrestFBを使用しています)。
ページに対する適切なmanage_pages
権限を使用して個人アカウントを承認する手順を実行しました。ページのアクセストークンも取得しました。そのページに好きなように投稿することもできました。問題は、(開発者ツールのグラフエクスプローラーを介して)取得したトークンの有効期限が1時間であることです。それよりずっと長く、できれば永遠に続く必要があります。
答えはSO)を含めてインターネットを見回しましたが、ほとんどの投稿は恐ろしいFBドキュメントを指しているか、外部アプリケーションをFacebookアプリケーションにフックして投稿することについて漠然と言及しています。私はそれを機能させようとしましたが、率直に言って、プロセス全体に混乱しています(たとえば、コールバックアドレスとは何ですか?)。
とにかく、私はgetting a long lasting access token
で平易な英語のステップバイステップの説明を見て、1つのアプリケーションからFacebookのファンページに投稿するために使用できることを望んでいます。
FBのドキュメントを参照しないでください。ひどいです。私は少なくとも十数回それを経験しました。
ありがとうございました。
ファンページの有効期限が切れないトークンを取得するために実行できるいくつかの手順は次のとおりです。
まず、長期間有効なユーザーアクセストークン(2か月で有効期限が切れます)を取得する必要があります。これを取得するには、次の呼び出しを行います。
GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
詳細 ここ 。これで問題が発生した場合はお知らせください。
上記の手順で取得したトークンを使用して、ページの有効期限が切れないアクセストークンを取得します(通常のトークンではなく、ここでの主な違いです)。
$facebook->api("/PAGE_ID?fields=access_token");
したがって、コンセプトは、長寿命のページトークンを取得するには、呼び出しを行うときに長寿命のユーザートークンを使用する必要があるということです。
@Shadowfaxは完全に正しいです。ワークフローを完了するためだけに:
manage_pages
権限を持つ短期ユーザーaccess_tokenを取得します。サーバーから、@ Shadowfaxリクエストを行います。
GET /oauth/access_token? grant_type=fb_exchange_token&client_id={your-app-id}& client_secret={your-app-secret}&fb_exchange_token={short-lived-user-access_token}
ホストgraph.facebook.com
およびポート443
を使用します。
サーバーにはアプリの秘密鍵が含まれているため、サーバーからこのリクエストを行う必要があります。
サーバーから、ユーザーaccess_tokenをこの長寿命バージョンに置き換えることでFacebookにクエリを実行できるようになりました
サーバーから、ユーザーアカウントにクエリを実行するか、長期間有効なユーザーaccess_tokenを使用して、ページaccess_tokenを取得します。
GET /{user-id}/accounts?access_token={long-live-token}
IDとaccess_tokenを使用してすべてのユーザーのページを取得します。
または、page_idがすでにわかっている場合は、特定のページに直接クエリを実行できます。
GET /{page-id}/?fields=access_token&access_token={long-live-token}
@Shadowfaxが言ったように、このページの長寿命トークンは、ユーザー(あなた)がアプリの権限を取り消さない限り、永久に存続します。