是否可以延长60天访问令牌?我在某处读到,当用户访问您的网站时,它可以扩展吗? (另外60天)?这是完全相同的标记还是新标记?
我基本上想要像以前一样使用offline_access。我有一个小的jquery脚本,在他们自己的网站上显示用户的Facebook墙。
我也读到了这个:
""您需要让用户在60天内再次重新认证以获取新令牌。" - - 不。只要允许使用publish_stream,您就不需要用户的令牌。在用户从应用列表中删除应用程序之前 - 即使在100年后,您也可以发布消息。所以,不,没有理由在应用程序密钥和秘密之外另外保留任何令牌 - zerkms 4月5日9:02"
这是真的吗?显然我不需要发布权限,我只想读取流权限。
- 更新:
来自FB的报道:
"如果您想刷新仍然有效的长期存在的access_token,则必须首先获得一个新的短期用户access_token,然后在下面调用相同的端点。返回的access_token将具有新的长期到期时间,但是,access_token本身可能与先前授予的长期access_token相同或不同,"
那么你究竟如何获得一个全新的令牌呢? FB.login方法只返回现有(未过期)令牌。有任何想法吗?
答案 0 :(得分:3)
没有。 你不能延长令牌通过60天,你只能延长短期令牌,当你这样做时,你会获得一个60天的长期令牌。
您也可以拥有所有权限,但除非您拥有有效的访问令牌,否则您无法发出api请求(嗯,您可以但会获得异常)。
我不确定如何获得60天令牌,如果它是客户端(然后扩展它)或服务器端,但根据Removal of offline_access permission官方帖子:
方案3:服务器端OAuth开发人员
...
如果在仍然存在有效的长期用户access_token的情况下进行呼叫 用户,从第二次调用返回的用户access_token可能是 相同或可能已经改变,但在任何一种情况下,到期时间都会 设置为很长的到期时间。
或者
方案4:客户端OAuth并通过新端点扩展Access_Token到期时间
...
请注意,端点只能用于延长寿命 用户access_tokens。如果你传递了一个持久的access_token 到期时间,端点将简单地传递相同的access_token 在不改变或延长到期时间的情况下回复您。
...
答案 1 :(得分:3)
用于扩展访问令牌到期日期使用,
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
有关详细信息,请查看http://developers.facebook.com/roadmap/offline-access-removal/
答案 2 :(得分:1)
您可以使用PHP SDK
使用以下代码$extendedToken = $facebook->setExtendedAccessToken();
$token = $facebook->getAccessToken();
print_r($token);
用户登录后并为您提供了所需的权限。只需使用Graph API调用
,您还可以检索其他扩展访问令牌,例如Page$facebook->api('<PAGE_ID>?fields=access_token');
这将返回页面的扩展访问令牌。只要您要求获得manage_page权限。
答案 3 :(得分:0)
Sujathan是正确的 - 有一个Facebook页面记录了自更改以来要做的事情:http://developers.facebook.com/roadmap/offline-access-removal/
向以下网址发送获取请求:
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
此外,它看起来像是重复:How to extend access token validity since offline_access deprecation