Facebook:永久页面访问令牌?

我从事一个将Facebook页面作为其数据源之一的项目。 它定期从其中导入一些数据,而不涉及GUI。 然后我们使用一个网络应用程序来显示我们已有的数据。

并非所有的信息都是公开的。 这意味着我必须访问一次数据,然后保存它。 但是,我不知道这个过程,我还没有找到一个好的教程。 我想我需要一个access_token ,我该如何从用户那里一步一步地获得它? 用户是Facebook页面的管理员,他是否必须在页面中添加我们的FB应用程序?

编辑:谢谢@phwd的提示。 我做了一个教程如何获取永久页面访问令牌,即使offline_access不再存在。

编辑:我刚刚发现它的答案在这里:长期的FB访问令牌服务器拉FB页面信息


按照Facebook扩展页面标记文档中的说明,我能够获得一个不会过期的页面访问令牌。

除非另有说明,否则我建议使用Graph API Explorer进行所有这些步骤。

0.创建Facebook应用程序

如果您已经有应用程序 ,请跳至步骤1。

  • 转到我的应用程序。
  • 点击“+添加新的应用程序”。
  • 设置网站应用程序。
  • 您无需更改其权限或任何内容。 您只需要一个应用程序,在您完成访问令牌之前不会消失。

    1.获取用户短暂访问令牌

  • 转到图形API资源管理器。
  • 选择要获取访问令牌的应用程序(在“应用程序”下拉菜单中,而不是“我的应用程序”菜单中)。
  • 点击“获取令牌”>“获取用户访问令牌”。
  • 在弹出的“扩展权限”选项卡下,选中“manage_pages”。
  • 点击“获取访问令牌”。
  • 通过有权访问的Facebook帐户授予访问权限以管理目标网页。 请注意,如果此用户失去访问权限,最终的永不过期的访问令牌可能会停止工作。
  • 出现在“访问令牌”字段中的令牌是您的短期访问令牌。

    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浏览器:
  • 从右上角的下拉菜单中选择您的应用
  • 从下拉列表中选择“获取用户访问令牌”(访问令牌字段右侧),然后选择所需的权限
  • 复制用户访问令牌
  • 访问令牌调试器:
  • 粘贴复制的标记并按“调试”
  • 按“扩展访问令牌”并复制生成的长期用户访问令牌
  • 图表API浏览器:
  • 将复制的令牌粘贴到“访问令牌”字段中
  • 通过“PAGE_ID?fields = access_token”进行GET请求
  • 在响应中找到永久页面访问令牌(节点“access_token”)
  • (可选)访问令牌调试器:
  • 粘贴永久令牌并按下“调试”
  • “过期”应该是“从不”
  • (通过API版本2.9-2.11测试)


    除了Vlasec答案中的建议步骤之外,您还可以使用:

  • 使用图表API浏览器进行查询,例如/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
  • 访问令牌调试器以获取有关访问令牌的信息。
  • 链接地址: http://www.djcxy.com/p/54113.html

    上一篇: facebook: permanent Page Access Token?

    下一篇: Facebook signed request not providing all information