Facebook:永久页面访问令牌?
我从事一个将Facebook页面作为其数据源之一的项目。 它定期从其中导入一些数据,而不涉及GUI。 然后我们使用一个网络应用程序来显示我们已有的数据。
并非所有的信息都是公开的。 这意味着我必须访问一次数据,然后保存它。 但是,我不知道这个过程,我还没有找到一个好的教程。 我想我需要一个access_token
,我该如何从用户那里一步一步地获得它? 用户是Facebook页面的管理员,他是否必须在页面中添加我们的FB应用程序?
编辑:谢谢@phwd的提示。 我做了一个教程如何获取永久页面访问令牌,即使offline_access
不再存在。
编辑:我刚刚发现它的答案在这里:长期的FB访问令牌服务器拉FB页面信息
按照Facebook扩展页面标记文档中的说明,我能够获得一个不会过期的页面访问令牌。
除非另有说明,否则我建议使用Graph API Explorer进行所有这些步骤。
0.创建Facebook应用程序
如果您已经有应用程序 ,请跳至步骤1。
您无需更改其权限或任何内容。 您只需要一个应用程序,在您完成访问令牌之前不会消失。
1.获取用户短暂访问令牌
出现在“访问令牌”字段中的令牌是您的短期访问令牌。
2.生成长寿命访问令牌
遵循Facebook文档中的这些说明,向您发送GET请求
https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} &client_secret = {app_secret} &fb_exchange_token = {short_lived_token}
输入您的应用的ID和密码以及上一步中生成的短暂令牌。
您无法使用图形API资源管理器 。 出于某种原因,它被卡住了这个请求。 我认为这是因为响应不是JSON,而是查询字符串。 由于这是一个GET请求,您可以直接转到浏览器中的URL。
答案应该如下所示:
{“access_token”:“ ABC123 ”,“token_type”:“承载者”,“expires_in”:5183791}
“ABC123”将是您长期存取的令牌。 您可以将其放入访问令牌调试器进行验证。 在“过期”之下,应该有“2个月”之类的内容。
3.获取用户ID
使用长期访问令牌,发出GET请求
https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}
id
字段是您的帐户ID。 下一步你将需要它。
4.获取永久页面访问令牌
发出GET请求
https://graph.facebook.com/v2.10/ {account_id} / accounts?access_token = {long_lived_access_token}
JSON响应应该有一个data
字段,其下是用户有权访问的项目数组。 找到您想要永久访问令牌的页面的项目。 access_token
字段应该有永久访问令牌。 将其复制并在Access令牌调试器中进行测试。 在“过期”之下,应该说“从不”。
这里是我的解决方案,只使用Graph API Explorer和Access令牌调试器:
(通过API版本2.9-2.11测试)
除了Vlasec答案中的建议步骤之外,您还可以使用:
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER