8

主な目的: Facebook アプリの有効期限が無制限のアクセス トークンを取得するにはどうすればよいですか?

背景情報

次のように設定された MyApp という FB アプリがあります。

  • MyApp は Facebook アプリとのやり取りを許可されています
  • MyApp には、ページを管理するためのアクセス権があります (manage_pages)
  • MyApp は Insights (read_insights) にアクセスできます

私たちの目標は、毎晩 1 回など、Insights データを自動的に抽出することです。

oauth で生成されたアプリ トークンを使用して試行する

  1. MyAPPに属するAPP_ACCESS_TOKENを取得

    graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials

    廃止されたトークンの例: 328467452729456598|Wn2Gt69Ofg5ySdOGa3TsP2p4R

  2. APP_ACCESS_TOKEN を使用して、各ページの PAGE_ACCESS_TOKEN を取得する graph.facebook.com/me/accounts?access_token=APP_ACCESS_TOKEN

  3. PAGE_ACCESS_TOKEN を使用して、ページのインサイト データを取得します: graph.facebook.com/YOUR_APP_ID/insights?access_token=PAGE_ACCESS_TOKEN

私の問題は、ステップ 1 で取得した APP_ACCESS_TOKEN にトークンのユーザー部分が欠けているように見えるため、ステップ 2 の実行時に次のエラーが発生することです。

 "message": "An active access token must be used to query information about the current user.",
 "type": "OAuthException",
 "code": 2500

Graph Explorer API トークンから取得したトークンを使用して試行します

Graph API エクスプローラー (https://developers.facebook.com/tools/explorer) で取得した APP_ACCESS_TOKEN を使用すると、ユーザー部分がかなり長いトークンが取得されます。ステップ 2 と 3 でこのトークンを使用すると正しいデータが得られますが、すべてのトークンは 2 時間しか有効でなく、その後、これを使用してインサイト データを自動取得することはできません。

短命のトークンを長命のトークンに交換しようとする

https://developers.facebook.com/roadmap/offline-access-removal/#page_access_tokenのガイドで説明されている手順に従って、短命のトークンを長命のトークンと交換しようとしました。

oauth プロセスから取得したトークンを交換しようとすると、次のエラーが発生します。

  "message": "No user access token specified",
  "type": "OAuthException",
  "code": 1

交換メソッドで Graph エクスプローラーから手動で取得したトークンを使用すると、他の手順も同様に機能しますが、この新しいトークンはどのくらいの期間存続しますか? トークンが x 日後または他のイベントの後に期限切れになった場合でも、最初のトークンをプログラムで取得するという問題に直面します (Graph Explorer から手動で毎回取得するのではなく)。

それで、これを解決するために、長寿命で自動的に取得されたトークンを取得する方法を知っている人はいますか?

ありがとう!

4

2 に答える 2

-1

ステップ 2 では、ユーザーのを使用してAPI エンドポイントaccess_tokenにアクセスする必要があります。/accountsここではアプリ アクセス トークンを使用できません。

あなたがすべきことは次のとおりです。

  1. Facebook からユーザーのアクセス トークンを取得する
  2. access_token を長期間有効なトークンに交換する
  3. /accounts長期間有効なページ アクセス トークンを取得するための呼び出し
  4. 有効期限が切れるまで有効なトークンを使用して、ページの分析情報にアクセスします
  5. 手順 1 ~ 4 を繰り返します。
于 2012-08-28T15:46:23.227 に答える