【发布时间】: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