主要目标:如何获取facebook应用程序无效的访问令牌?
Background information
我们有一个名为MyApp的FB应用程序,其设置如下:
-
MyApp有权与我们的Facebook应用程序进行交互
-
MyApp具有管理我们页面的访问权限(manage_pages)
-
MyApp可以访问Insights(read_insights)
我们的目标是自动提取数据洞察数据,例如每晚一次 .
Attempt with oauth generated app token
- 获取属于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
Attempt with token retrieved from Graph Explorer API token
如果我使用通过Graph API Explorer(https://developers.facebook.com/tools/explorer)获得的APP_ACCESS_TOKEN,我会得到一个令牌,其中用户部分明显更长 . 如果我在步骤2和3中使用此令牌,我会获得正确的数据,但所有令牌仅在2小时内有效,之后我无法使用此令牌自动检索洞察数据 .
Attempt with exchanging short lived token for long lived token
按照本指南中列出的步骤:https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token,我尝试将一个短期令牌交换为更长寿的令牌 .
如果我使用try来交换从oauth进程获得的令牌,我会收到错误:
"message": "No user access token specified",
"type": "OAuthException",
"code": 1
如果我在交换方法中使用从图形资源管理器手动获得的令牌,我可以让其他步骤也可以工作,但这个新令牌会持续多长时间?如果令牌在x天之后或其他事件之后到期,我仍然会面临以编程方式获取初始令牌的问题(而不是手动从图表浏览器中手动获取) .
那么有谁知道如何获得一个长期的,自动检索的令牌来解决这个问题?
谢谢!
2 回答
此shell脚本尝试帮助生成访问令牌:
https://github.com/dncohen/fb_token
在步骤2中,您必须使用用户的
access_token
来访问/accounts
API endpoints . 您无法在此处使用App Access令牌 .你应该做的是:
从Facebook获取用户的访问令牌
将access_token用于长期令牌
调用
/accounts
以获取长期页面访问令牌使用长期令牌访问页面洞察,直到它过期
重复步骤1-4 .