繁体   English   中英

Facebook PHP SDK获取访问令牌上的到期日期

[英]Facebook PHP SDK Getting Expiration date on Access Token

我遇到了一个问题,即用户的访问令牌将过期,但是会话尚未导致某些api调用引发异常。

我希望能够以某种方式直接调用访问令牌的过期数据,或者至少以某种简洁的方式来判断我正在使用的访问令牌是否已经过期,而不必先尝试api调用并捕获异常并读取错误信息。

现在,用伪代码我有

try {
    $permissions = getFBPerms();  # this seems to work fine even with expired tokens
    doFBApiCall(); # this will throw an exception withe expired tokens
}
catch (FacebookApiException $e) {
    var_dump($e); # this usually comes out to expired tokens
}

我希望能够

if (checkFBTokenStatus())
    // do everything with no worries
else 
    gotoFBLoginUrl(); # re-log them in to get new access tokens

我也希望有一个干净的解决方案,我可以的情况下,很容易适应用户变化的密码,他们授权的应用程序等等。我目前正在关闭的这篇博客文章 ,但我不喜欢它的工作方式,它并没有真正意义。 此外,我希望自从发布该博客文章以来,他们已经更新了该机制。 谢谢。

有什么问题:

try {
    $permissions = getFBPerms();  # this seems to work fine even with expired tokens
    doFBApiCall(); # this will throw an exception withe expired tokens
    // Do whatever you want...
}
catch (FacebookApiException $e) {
    gotoFBLoginUrl(); # re-log them in to get new access tokens
}

当然,您可以调用例如/me来检查令牌是否有效,但这意味着在每个API调用之前执行一次额外的调用,这没有多大意义。

另外,我也不会依赖到期日期(令牌创建后至少3小时),因为它可能不准确 正确的方法是捕获异常, 然后将用户重定向到登录页面。

或者,以一种残酷的方式,要求令牌没有过期:)

更新:取消授权回调

如果您进入应用程序设置的“高级”窗格,则会找到“取消授权回调”字段,您可以在其中插入一个URL,该URL在用户取消授权给您的应用程序时会被ping通。 这样,您就可以确定用户是否删除了您的应用程序。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM