12

有AY方式来获得访问令牌的到期日期,我需要这个,所以我可以刷新我的会议,我也想这样,所以我能避免查找在Facebook上的用户当通过PHP cURL获取数据时。如何提取Facebook的访问令牌过期信息

也该链接 https://developers.facebook.com/tools/access_token/ 如果我点击我的自定义应用程序的一个DEBUG按钮,我可以看到这个信息(例如)

App ID: 23131XX000: My Custom App 
User ID: XX99858XX : Mario Bro 
Issued: XX11111XX : 2:00 pm Feb 10 2012 
Expires: XX11111XX : 3:00 pm Feb 10 2012 
Valid: True 
Origin: Unknown 
Scopes: email user_likes 

,并显示来自该应用程序的到期日期。有没有一种方法可以在PHP SDK或图形URL命令中获取这些信息?

+0

当你得到令牌时它会告诉你它何时到期。所以你可以从一开始就得到它,保存并计算在任何给定时刻它仍然可用。 – Andrew 2012-02-10 21:39:46

+0

嗨然后为答复,我怎样才能使用Facebook PHP SDK解压缩?对不起,如果我不明白你的观点,但我不确定在哪里看,开发人员文档中是否有可能的链接,以便我可以研究该部分?或可能的解释这部分的链接? – zearth 2012-02-10 21:53:20

回答

3

更新:
代码波纹管不再起作用(见bug报告PHP SDK getSignedRequest does not include "expires" field),有没有办法让用PHP-SDK的数据)。

您可以使用Debug tool当你access_token到期手动搜寻。

您可以从 signed_request得到 access_token到期时间:

$facebook = new Facebook(array(
    'appId'=>APP_ID, 
    'secret'=>APP_SECRET 
)); 
$signedRequest = $facebook->getSignedRequest(); 
$expiresDate = date('c', $signedRequest['expires']); 
print_r($expiresDate); 

+0

这不适合我。没有“过期”键。 – phirschybar 2012-03-31 18:49:20

+0

@phirschybar,示例代码中存在错误。现在尝试一下,如果你还没有'expires',可能根本没有'signed_request',那么试着在这种情况下'print_r($ signedRequest)'来解决它。 – 2012-03-31 18:56:38

+0

我有同样的问题,'过期'字段丢失。 – Roni 2012-07-11 09:13:02

2

有一个图形API端点(可能这个问题后已被释放),让你的过期时间和其他有用的信息。有关详细信息,请参阅Debugging Access Tokens and Handling Errors文档。

+0

虽然,所有的应用程序应该支持令牌在任何时候被无效(用户未经授权的你等),并且不应该依赖使用反向信道来获取这些信息。 – 2012-10-25 07:36:51

+3

精确链路如下:?https://developers.facebook.com/docs/facebook-login/access-tokens#debug和API端点是'''GET/debug_token的input_token = {输入令牌}&=的access_token {访问令牌}''' – 2014-04-22 15:38:25