web-dev-qa-db-ja.com

サーバーからFacebookファンページに投稿するための長期的なトークンを取得する手順は何ですか

Facebookにビジネスページがあります(Facebookではファンページとして知られています)。

ユーザーがアプリで特定のアクションを実行するたびにpost to that Pageしたいと思います。ユーザーではなく(つまり、個人アカウントから)ページ自体として投稿したい。投稿は外部サーバーから送信されます(私はrestFBを使用しています)。

ページに対する適切なmanage_pages権限を使用して個人アカウントを承認する手順を実行しました。ページのアクセストークンも取得しました。そのページに好きなように投稿することもできました。問題は、(開発者ツールのグラフエクスプローラーを介して)取得したトークンの有効期限が1時間であることです。それよりずっと長く、できれば永遠に続く必要があります。

答えはSO)を含めてインターネットを見回しましたが、ほとんどの投稿は恐ろしいFBドキュメントを指しているか、外部アプリケーションをFacebookアプリケーションにフックして投稿することについて漠然と言及しています。私はそれを機能させようとしましたが、率直に言って、プロセス全体に混乱しています(たとえば、コールバックアドレスとは何ですか?)。

とにかく、私はgetting a long lasting access tokenで平易な英語のステップバイステップの説明を見て、1つのアプリケーションからFacebookのファンページに投稿するために使用できることを望んでいます。

FBのドキュメントを参照しないでください。ひどいです。私は少なくとも十数回それを経験しました。

ありがとうございました。

15
Ichorus

ファンページの有効期限が切れないトークンを取得するために実行できるいくつかの手順は次のとおりです。

  1. まず、長期間有効なユーザーアクセストークン(2か月で有効期限が切れます)を取得する必要があります。これを取得するには、次の呼び出しを行います。

    GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
    

    詳細 ここ 。これで問題が発生した場合はお知らせください。

  2. 上記の手順で取得したトークンを使用して、ページの有効期限が切れないアクセストークンを取得します(通常のトークンではなく、ここでの主な違いです)。

    $facebook->api("/PAGE_ID?fields=access_token");
    

したがって、コンセプトは、長寿命のページトークンを取得するには、呼び出しを行うときに長寿命のユーザートークンを使用する必要があるということです。

29
Sahil Mittal

@Shadowfaxは完全に正しいです。ワークフローを完了するためだけに:

  1. Facebookログインとmanage_pages権限を持つ短期ユーザーaccess_tokenを取得します。
  2. この短期ユーザーaccess_tokenをサーバーに送信します
  3. サーバーから、@ 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を使用します。

    サーバーにはアプリの秘密鍵が含まれているため、サーバーからこのリクエストを行う必要があります。

  4. サーバーから、ユーザーaccess_tokenをこの長寿命バージョンに置き換えることでFacebookにクエリを実行できるようになりました

  5. サーバーから、ユーザーアカウントにクエリを実行するか、長期間有効なユーザー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が言ったように、このページの長寿命トークンは、ユーザー(あなた)がアプリの権限を取り消さない限り、永久に存続します。

13
Sebastien C.