2015-04-22 82 views
0

我使用Facebook PHP SDK来获取用户的访问令牌。该代码是从这里https://developers.facebook.com/docs/php/gettingstarted/4.0.0 复制他们应该象下面这样:当交换长寿命令牌时,Facebook图形API停止返回到期吗?

$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。但是现在只返回access_token。 Facebook是否改变了其API输出?

+0

如果您想知道API实际返回的内容,那么您应该“手工”调用该API - 否则您将无法判断它是否仅仅是隐藏该信息的PHP SDK 。 – CBroe

+0

对不起,我还不够清楚。我实际上正在使用XDebug检查$ session变量。 var_dump只是说明我如何检查它的另一种方式。 – thaiphv

回答

0

上面的代码看起来不错,但对于,

令牌到期溶胶: Facebook已经改变了它的终点重定向的URL万岁令牌,

现在,终点是: https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id= ...

另外一般情况下,facebook bydefault提供短期访问令牌,如果您想要一个长达60天的长寿命令牌访问权限,则可以使用以下功能。 link for ref

$ longLivedSession = $ facebookSession-> getLongLivedSession();

echo $ longLivedSession-> getToken();

查看以下链接,其中突出显示了与长生命值相关的更多信息。 https://developers.facebook.com/docs/facebook-login/access-tokens#extending

http://www.devils-heaven.com/facebook-access-tokens/

+0

_“在你的catch语句中有一个额外的'\'异常之前”_ - 这不是一个错误,它只是意味着'Exception'类在默认的[namespace]中(http://php.net/manual/en /language.namespaces.php)... – CBroe

+0

@WisdmLabs,谢谢你的回答,但我没有找到它。这些在FB开发人员网站中记录得非常好。我想知道的是为什么我使用FB PHP SDK的示例代码,但我没有获得expires值。 – thaiphv

0

更新:我学到了扩展令牌与范围的离线访问权限的帐户创建。我全力支持并取消了访问权限,令牌延长了60天。

看起来,扩展令牌返回0而不是过期日期,因为它永不过期。扩展令牌开始打破我的应用程序,因为它返回0.它用来返回约60天的时间戳。我将扩展令牌带到Open Graph Debugger,https://developers.facebook.com/tools/debug/ Expires = Never的值。

任何人都可以证实这一点或指向更新的文档。文档仍然说60天。