【发布时间】:2013-06-21 09:04:19
【问题描述】:
由于一些不幸的术语选择,这个话题对谷歌来说非常困难,所以在我问我的问题之前,这里有一个快速澄清:
Facebook 帐户(即一个人的顶级个人帐户)可以有子帐户(公司、品牌、名人等),不幸的是 Facebook 将其称为“帐户”。与这些“帐户”交互的端点位于 [user id]/accounts。出于这个问题的目的,我将这些称为“子帐户”
Facebook 声明和实际观察:
Facebook 在这篇文章 (https://developers.facebook.com/roadmap/offline-access-removal/) 中说了几件事:
有两种类型的 access_tokens:“长期用户 access_token 的有效期为 60 天,而短期用户 access_tokens 目前的有效期为 1 到 2 小时”实际观察: 似乎是真的。我的应用只做服务器端,所以无法确认短类型。
“如果 access_token 是从服务器端 OAuth 调用生成的,则默认情况下,生成的 access_token 将具有更长的过期时间” 实际观察:我的服务器端应用程序确实会产生更长的时间, 60 天到期。
“当从 ...https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN 请求扩展 access_token 时 ...如果您传递一个具有长期过期时间的 access_token,端点将简单地将相同的 access_token 传递给您,而无需更改或延长到期时间”实际观察:在我的情况下不是这样。当我通过原始的 60 天令牌时,我会得到一个不同的令牌。此外,新的、不同的令牌根本不起作用。 FB 端点在尝试使用时返回身份验证失败。
“当用户授予应用程序manage_pages权限时,应用程序能够通过查询[用户ID]/帐户来获取用户管理的页面的页面访问令牌...通过使用长期用户访问令牌,查询 [User ID]/accounts 端点现在将提供不会过期的页面访问令牌。” 实际观察:我的应用检索到的页面访问令牌(使用原始、根、60 天令牌)将在 60 天后过期,而它们应该是无限的。根据 #3,我不能尝试使用新的、不同的(据说是扩展的)访问令牌,因为它是无效的。
问题:
我的服务器端请求生成有效期为 60 天的令牌。请求扩展令牌应该回显相同的令牌,但不会。为什么不呢?
我得到的新的、不同的令牌根本不起作用。为什么不呢?
如果我的应用程序获得的原始访问令牌是长的 60 天类型,那么我使用它们检索的 PAGE 访问令牌应该不会过期。但它们确实会过期。为什么?
任何帮助将不胜感激!!!
版主注意事项:在因为不够“面向代码”而禁用此问题之前,Facebook 将所有问题指向 Stack Exchange。 https://developers.facebook.com/support/如果我不能在这里问这个问题,那我去哪里问呢?
更新:官方支持的检查令牌有效性的方法是 如下:
graph.facebook.com/debug_token?
input_token={token-to-inspect}
&access_token={app-token-or-admin-token}
当我使用此方法时,我为我的用户获得的应用令牌显示为“0”到期,因为它们应该。所以我猜他们是无限的。直到 60 天过去了,我才能确定 FB 是否用 "expires":0 说真话;
【问题讨论】:
-
您是否知道页面级令牌是否过期? Facebook 的 api 文档建议但不是 100% 清楚
-
我认为“更新”部分起到了作用。我的应用不再处于活动状态,所以我不能确定,但我认为它们没有过期。
标签: facebook facebook-graph-api