我知道有很多关于Facebook访问令及其引起的悲痛的问题,但尽管进行了大量实验并阅读了许多令人沮丧的模糊博客文章(FB等),我仍然在努力寻找明确的答案根据我的需要。到目前为止,让我简洁地分解我的过程:
这就是我被困的地方。我的60天密钥适用于我的服务器从页面中提取所需的信息,但据我所知,没有办法以编程方式扩展该60天密钥。我也不知道如何生成新的短期密钥,而无需手动访问Facebook Graph API Explorer并创建一个。
由于我的服务器向Facebook API发出请求而不是基于用户的系统(我可以轻松请求用户再次授权Facebook应用程序),这会创建一个非常笨重的系统。由于Facebook已弃用offline_access
,是否真的没有永久的方法让我的服务器从我自己的页面提取信息?我是否真的必须手动创建一个新密钥并每60天手动更新一次我的服务器?
或者有什么东西我不见了?
更新
之前在此处找到的分步指南已迁移到自己的answer。
答案 0 :(得分:181)
这些是以前在问题中的步骤 - 它们已迁移到此答案。
我们发现有可能生成一个未过期的Facebook页面访问令牌(在@Igy的帮助下),这里有一个明确的,逐步的提示,适用于所有相同的人:
manage_pages
权限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>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
Expires: Never
!应该这样做。您现在应该拥有一个不会过期的Facebook页面访问令牌,除非:
其中任何一项都会导致访问令牌无效。
如果您收到(#100) Tried accessing nonexisting field (accounts) on node type (Page)
,请转到Access Token Debugger,复制User ID
的值,然后在步骤9中将其替换为网址的“我”部分。 / p>
答案 1 :(得分:15)
使用页面管理员的60天令牌检索页面访问令牌(通过/PAGE_ID?fields=access_token
或/me/accounts
) - 页面访问令牌将没有到期时间
答案 2 :(得分:2)
我最近试图实现类似的目的(与该线程中描述的用例相似),但是我想确保尊重Facebook当前的政策,所以我做了一些研究,在此我分享了我发现的内容。
因此,正如我已经说过的,我的用例与此处描述的用例非常相似;即:
在我看来,这是一个合法的用例,但是我不确定如何以符合Facebook政策的方式来实现它。
我遵循了已接受答案的步骤,并且该方法可以正常工作,但情况似乎有所变化:现在,即使生成的页面令牌没有过期,access to data
也会在60天后过期。如果您按照以下步骤操作并检查FB Token Debugger Tool中的页面令牌,也会看到这一点。
此外,不幸的是,生成的页面令牌与用户帐户绑定的事实也很不幸,因为如果用户更新他/她的密码,则页面令牌也会失效。
经过几个小时的研究,我偶然发现了以下Facebook文档文章:Business Login for Direct Businesses。
事实证明,现在可以按照上述文章中所述的步骤,生成与任何特定Facebook用户帐户都不相关且不会过期的页面令牌(除非FB App被删除或基础应用程序令牌被删除,您知道...)
这是步骤和最重要的部分:
manage_pages
和publish_pages
。
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
该令牌将永不过期,并且不会与特定的Facebook用户绑定,因此正是我们所需要的!
最后一部分是确保您的Facebook应用得到Facebook的批准。实际上,这是最重要的部分,因为如果人们看不到我们的帖子,那么整个过程就一文不值。
我想确定要依靠上述程序为我的客户构建一些东西,而不会被Facebook最终拒绝,因此,在事前(即,开始从事我的客户项目之前),我经历了创建页面,应用程序,业务经理帐户等的整个过程。我验证了我的业务。我将我的应用提交了审核。在我的要求中,我非常详细地说明了我的用例,并强调该应用程序是用于“自用”的(即该组织正在为自己而不是其他Facebook用户开发一个应用程序)。我在不到24小时的时间内得到了批准。
关于应用审核过程的其他一些注意事项:
curl
实用程序在终端中介绍了手动操作(生成页面令牌并在Facebook页面上发帖)。我还展示了如何使用业务管理器将系统用户链接到页面并生成令牌,等等。我希望这些信息对具有类似用例的人有用。
答案 3 :(得分:1)
非常感谢@redhotvengeance提供的分步指南。
过了一段时间,现在Facebook文档中有明确描述:
扩展页面访问令牌
应用可以从页面管理员用户检索页面访问令牌 使用manage_pages权限进行身份验证。如果用户访问 用于检索此页面的令牌访问令牌是页面的短命 访问令牌也将是短暂的。
要获取更长寿的页面访问令牌,请交换用户访问权限 如上所述,对于长期存在的令牌,然后请求页面访问 令牌。生成的页面访问令牌将没有任何到期时间。
答案 4 :(得分:0)
您还可以在Facebook上的应用信息中心复制和过去。 步骤:
在页面右上角选择您的应用 (pic of what it looks like)
请记住,虽然理论上您的令牌不会过期,但它与您登录的Facebook帐户直接相关。因此,如果您更改了密码,或者从帐户和应用之间删除了权限,那么您的令牌将无法再有效。