持久的FB访问令牌,用于服务器提取FB页面信息
我知道有很多关于Facebook访问令牌和他们所造成的悲伤的问题,但是尽pipe有很多实验,并且阅读了许多令人沮丧的模糊的博客文章(FB和其他),但我仍然在努力得到一个明确的答案。 让我简单地分解我的过程到目前为止:
- 我正在创build一个站点,服务器端,需要从一个单独的Facebook页面拉的post/状态
- 我是该Facebook页面的pipe理员
- 我创build了一个Facebook应用程序
- 使用Facebook Graph API Explorer ,我生成了一个短期密钥,连接到我的应用程序和我的帐户,授予我的帐户权限以查看我的页面的访问令牌
- 我已经把我的短命钥匙转换成长寿命钥匙(60天)
这就是我被卡住的地方 我的60天密钥工作正常,我的服务器从页面中获取所需的信息,但据我所知,没有办法以编程方式扩展60天的密钥。 我也不知道如何生成新的短期密钥,而无需手动转到Facebook Graph API Explorer并创build一个。
由于这是我的服务器向Facebook API发出请求,而不是基于用户的系统(我可以轻松地请求用户再次授权Facebook应用程序),因此会创build一个非常笨拙的系统。 由于Facebook弃用offline_access
,是否真的没有永久的办法让我的服务器从我自己的网页拉动信息? 我真的需要手动创build一个新的密钥,并手动每隔60天更新一次服务器吗?
还是有什么我失踪?
更新:
以前在这里find的分步指南已经被转移到了自己的答案中 。
这是以前在这个问题上的步骤 – 他们已经迁移到这个答案。
在发现可以生成Facebook页面访问令牌(在@Igy的帮助下)的情况下,这是一个清晰的,一步一步的问题,所有看起来相同的人:
- 确保你是你希望从中获取信息的FB页面的pipe理员
- 创build一个FB应用程序(应该是与页面pipe理员相同的用户帐户)
- 转到Facebook Graph API Explorer
- 在右上angular,从“应用程序”下拉列表中select您创build的FB应用程序
- 点击“获取访问令牌”
- 确保你添加了
manage_pages
权限 - 通过这个Graph API调用将这个短命的访问令牌转换成一个长期的访问令牌:
https://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
- 抓取返回的新的长期访问令牌
- 使用graphicsAPI调用,使用新的长期访问令牌查看您的帐户:
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
:https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
- 抓取您将从中拉取信息的页面的
access_token
- 把这个标记看成是
Expires: Never
!
这应该做到这一点。 您现在应该有一个不会过期的Facebook页面访问令牌,除非:
- 您更改您的Facebook帐户密码
- 您失去了目标网页的pipe理员权限
- 您删除或取消授权您的Facebook应用程序
任何这些都会导致访问令牌失效。
如果您正在(#100) Tried accessing nonexisting field (accounts) on node type (Page)
,请转到Access令牌debugging器 ,复制User ID
的值,并用它来replaceURL中的“我”部分第9步。
这在Offline Access弃用文档中已有介绍
使用页面pipe理员的60天令牌来检索页面访问令牌(通过/PAGE_ID?fields=access_token
或/me/accounts
) – 页面访问令牌不会有过期时间
非常感谢@redhotvengeance一步一步的指导。
过了一段时间,现在Facebook文档中已经有清楚的描述:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
扩展页面访问令牌
应用程序可以在页面pipe理用户使用manage_pages权限进行身份validation时检索页面访问令牌。 如果用于检索此页面访问令牌的用户访问令牌是短暂的,则页面访问令牌也将是短暂的。
为了获得一个长寿命的页面访问令牌,像上面那样交换一个长期的访问令牌,然后请求页面访问令牌。 生成的页面访问令牌不会有任何到期时间。
您也可以从Facebook上的应用程序仪表板复制和过去。 步骤:
-
在页面右上angularselect你的应用程序(图片看起来像)
- 点击左侧选项中的信使(它会自动设置) (图片的样子)
- 转到页面中的“令牌生成”部分。 select要为其生成令牌的页面。 (这部分看起来像什么图片)
- 复制和过去您的页面令牌,无论你需要它。
请记住,理论上,您的令牌不会过期,它直接绑定到您login的Facebook帐户。 所以说你改变你的密码或者删除你的账户和你的应用程序之间的权限,那么你的令牌将不再有效。