主要目标:如何获得对 Facebook 应用程序具有无限有效性的访问令牌?
背景资料
我们有一个名为 MyApp 的 FB 应用程序,其设置如下:
- MyApp 被授权与我们的 facebook 应用程序进行交互
- MyApp 有权管理我们的页面 (manage_pages)
- MyApp 有权访问 Insights (read_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 获取页面的 Insights 数据: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 Explorer (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 explorer 手动获取的令牌,我可以让其他步骤也能正常工作,但是这个新令牌能持续多久?如果令牌在 x 天后或其他一些事件之后过期,我仍然会面临以编程方式获取初始令牌的问题(而不是从 Graph Explorer 手动获取)。
那么有谁知道我怎样才能获得一个长期有效的、自动检索的令牌来解决这个问题?
谢谢!