我使用Facebook PHP SDK获取用户的访问令牌。代码是从这里复制的https://developers.facebook.com/docs/php/gettingstarted/4.0.0 它们应该如下所示:
$helper = new FacebookRedirectLoginHelper('your redirect URL here');
$loginUrl = $helper->getLoginUrl();
// Use the login url on a link or button to redirect to Facebook for authentication
然后在重定向动作中:
$helper = new FacebookRedirectLoginHelper();
try {
$session = $helper->getSessionFromRedirect();
var_dump($session);
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(\Exception $ex) {
// When validation fails or other local issues
}
几周前,我可以看到API返回的expires值。但现在,只返回access_token。 Facebook改变了API输出吗?
答案 0 :(得分:0)
上面的代码看起来不错,但是,
令牌到期Sol: Facebook已将其终端重定向网址更改为长期令牌,
一般来说,facebook bydefault提供短期实时访问令牌,如果你想要一个长寿命令牌访问,它可以在2小时后到期,它可以使用60天,而不是你可以使用以下功能。 link for ref
$ longLivedSession = $ facebookSession-> getLongLivedSession();
echo $ longLivedSession-> getToken();
查看以下链接,其中突出显示与万岁令牌相关的更多信息。 https://developers.facebook.com/docs/facebook-login/access-tokens#extending
答案 1 :(得分:0)
更新:我了解到扩展令牌是使用一个跨越远程访问范围的帐户创建的。我全力支持并删除了该访问权限,令牌延长了60天。
似乎扩展令牌会返回0而不是过期日期,因为它永不过期。扩展令牌开始破坏我的应用程序,因为它返回0.它用于返回大约60天的时间戳。我将扩展令牌带到了Open Graph Debugger,https://developers.facebook.com/tools/debug/ Expires = Never。
的值任何人都可以确认这一点或指向更新的文档。文档仍然说60天。