【问题标题】:Facebook PHP SDK: handling access token errorsFacebook PHP SDK:处理访问令牌错误
【发布时间】:2016-01-06 11:13:00
【问题描述】:

阅读关于访问令牌的 Facebook 文档,有点不清楚如何实际编写 PHP 代码来处理它们。测试显示了一点,但我想正确地做到这一点。

因此,在我的应用程序中,我使用 Javascript SDK 登录,当它返回时,我进行 Ajax 调用以保存访问令牌。处理该调用的服务器将该访问令牌转换为长期令牌,并将其存储在我们的数据库中。到目前为止一切顺利。

但是在将来调用 PHP SDK 时,我想处理访问令牌过期或用户使令牌无效的问题。我的基本 SDK 调用如下:

try
{
    $request = new Facebook\FacebookRequest( $this->fbApp, 
                                             $access_token, . . .);
    $response = $this->fb->getClient()->sendRequest($request);

    // some processing here
}
catch(Facebook\Exceptions\FacebookResponseException $ex) 
{
}
catch(Facebook\Exceptions\FacebookSDKException $ex)
{
}

文档建议我通过捕获“API 抛出的错误消息”来捕获异常,并提供以下信息:

{
  "error": {
    "message": "Error validating access token: Session has expired at unix time SOME_TIME. The current unix time is SOME_TIME.", 
    "type": "OAuthException", 
    "code": 190
  }
}

使用我唯一的方法来确定令牌是否过期或用户取消对应用程序的授权正在对错误消息进行字符串比较,或查看子代码(当然,这些代码是在其他地方定义的。blech)。

我的主要问题是 - 令牌错误是否总是作为 FacebookResponseExceptions 抛出?我对应用程序取消授权进行了测试,得到了 190 的异常代码,以及一条消息“验证访问令牌时出错:用户尚未授权应用程序”。有没有办法获取子代码?还是我只是假设错误代码 190 总是意味着通过登录过程将它们发回?

那么过期的令牌呢?很难测试,这会引发异常,还是 SDK 调用的响应会出错?

谢谢...

【问题讨论】:

    标签: php facebook facebook-graph-api


    【解决方案1】:

    OAuthException 是一个非常确定的指标,表明令牌不再有效,或者您没有执行所需操作所需的权限——在这两种情况下,您都可能希望通过登录发送用户再次流动。

    有关一些可能的错误代码的列表,以及一般应如何处理的一般说明,请参阅https://developers.facebook.com/docs/graph-api/using-graph-api/v2.5#errors

    如果您遇到此类 OAuthException,您可能需要调试已存储的令牌 - 这将告诉您它是否仍然有效:https://developers.facebook.com/docs/facebook-login/access-tokens#debug

    如果是,您可能需要调用/me/permissions,以了解用户授予您的应用程序的权限。您也可以通过/me/permissions/permission_name查看特定权限。

    【讨论】:

    • 听起来不错.. 但在 PHP 中,我没有收到 OAuthException,我收到的是 FacebookResponseException,至少在有人取消对应用程序授权的情况下。我不知道在令牌过期的情况下我会得到什么。
    • 我指的是你得到的异常的 "type": "OAuthException" 部分。检查应该是安全的(而不是在 message 部分进行字符串比较,这可能会在某个时候改变。)
    • Doh...好吧,去吧。但是......我的应用程序将作为自动发布应用程序在后台运行。如果令牌因为 60 天(或 Facebook 可能决定将其更改为任何随机的东西)而过期,我希望能够在那里重新启动令牌。如果他们取消授权,那就不一样了……所以能分辨出来就好了。
    猜你喜欢
    • 2013-01-03
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多