Error handling 验证访问令牌时出错

Error handling 验证访问令牌时出错,error-handling,facebook,Error Handling,Facebook,我偶尔会遇到这样的错误: 致命错误:未捕获异常:190:验证访问令牌时出错:这可能是因为用户已注销,也可能是由于系统错误。在第1053行输入..base_facebook.php 问题是我在没有任何警告的情况下随机得到它。我可以几个星期都不看它,然后它会突然出现。解决方案是什么?你可以等它结束。它抛出这个错误大约15分钟,然后你可以刷新,它将允许你继续你正在做的事情 我的问题是,这是我这边的问题吗?或者这是Facebook的问题?这是一个Facebook连接页面,如果有帮助的话。我做了研究,发现

我偶尔会遇到这样的错误:

致命错误:未捕获异常:190:验证访问令牌时出错:这可能是因为用户已注销,也可能是由于系统错误。在第1053行输入..base_facebook.php

问题是我在没有任何警告的情况下随机得到它。我可以几个星期都不看它,然后它会突然出现。解决方案是什么?你可以等它结束。它抛出这个错误大约15分钟,然后你可以刷新,它将允许你继续你正在做的事情

我的问题是,这是我这边的问题吗?或者这是Facebook的问题?这是一个Facebook连接页面,如果有帮助的话。我做了研究,发现这可能是由FQL查询引起的。但这至少是一致的吗?这似乎是完全随机的。这是我的FQL查询,以防万一

$facebook->api(array('method' => 'fql.query','query' => "SELECT first_name,middle_name,last_name,email,affiliations FROM user WHERE uid=".$user));
下面是Base_Facebook的第1052-1071行

protected function throwAPIException($result) {
$e = new FacebookApiException($result);
switch ($e->getType()) {
  // OAuth 2.0 Draft 00 style
  case 'OAuthException':
    // OAuth 2.0 Draft 10 style
  case 'invalid_token':
    // REST server errors are just Exceptions
  case 'Exception':
    $message = $e->getMessage();
  if ((strpos($message, 'Error validating access token') !== false) ||
      (strpos($message, 'Invalid OAuth access token') !== false)) {
    $this->setAccessToken(null);
    $this->user = 0;
    $this->clearAllPersistentData();
  }
}

throw $e;
}

谢谢(链接断开)开发者博客文章中所写的

由于各种原因,用户的访问令牌可能会变得无效。在大多数情况下,如果超过
expires
字段指定的时间,它们可能会过期(默认情况下,访问令牌的生存期为2小时)。许多开发人员没有意识到的是,如果用户更改密码、注销或通过应用程序仪表板取消对应用程序的授权,访问令牌也可能过期。您的应用程序处理此类情况非常重要。如果访问令牌过期,则需要重新获取有效的访问令牌

在我们可以使用
offline\u-access
权限获取未过期的令牌(除非用户与应用程序连接)之前,此权限现在已被弃用,请参阅了解如何获取过期时间更长的
access\u-token

更新:
截至2012年8月Facebook PHP-SDK(有关更多详细信息,请参阅)

更新2: 请注意,Facebook关于过期代币处理的原始博文已不存在。有新的文档可以用来获取详细信息。

这绝对是一个错误。我想补充一点,如果用户已停用其帐户,也会发生此错误。