主な目的: Facebook アプリの有効期限が無制限のアクセス トークンを取得するにはどうすればよいですか?
背景情報
次のように設定された MyApp という FB アプリがあります。
- MyApp は Facebook アプリとのやり取りを許可されています
- MyApp には、ページを管理するためのアクセス権があります (manage_pages)
- MyApp は Insights (read_insights) にアクセスできます
私たちの目標は、毎晩 1 回など、Insights データを自動的に抽出することです。
oauth で生成されたアプリ トークンを使用して試行する
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
APP_ACCESS_TOKEN を使用して、各ページの PAGE_ACCESS_TOKEN を取得する graph.facebook.com/me/accounts?access_token=APP_ACCESS_TOKEN
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 から手動で毎回取得するのではなく)。
それで、これを解決するために、長寿命で自動的に取得されたトークンを取得する方法を知っている人はいますか?
ありがとう!