Facebook 脱机访问令牌无效时的异常

Facebook 脱机访问令牌无效时的异常,facebook,exception-handling,facebook-oauth,Facebook,Exception Handling,Facebook Oauth,我知道,即使是从Facebook获得的离线访问令牌也可能无效(例如,如果用户更改了密码)。在这种情况下,我需要捕获抛出的异常,并向我的站点用户提供再次授权 那么,在这种情况下抛出的确切错误代码/消息是什么?我知道这是一个OAuthException,但无法获取代码。不能仅使用该类型,因为还有许多其他的OAutheException-s 我的计划是:更改base\u facebook.php并在此处添加案例处理代码: protected function throwAPIException($re

我知道,即使是从Facebook获得的离线访问令牌也可能无效(例如,如果用户更改了密码)。在这种情况下,我需要捕获抛出的异常,并向我的站点用户提供再次授权

那么,在这种情况下抛出的确切错误代码/消息是什么?我知道这是一个
OAuthException
,但无法获取代码。不能仅使用该类型,因为还有许多其他的
OAutheException
-s

我的计划是:更改
base\u facebook.php
并在此处添加案例处理代码:

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
        /*
         *   Need to add an appropriate case here.
        */

      case 'invalid_token':
        $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;
  }

与其更改SDK,不如像这样在其上编写一个包装器

try{

$facebook->api("/me/feed", .... );

}
catch($e){

//Error Handling
}

与其更改SDK,不如像这样在其上编写一个包装器

try{

$facebook->api("/me/feed", .... );

}
catch($e){

//Error Handling
}

万一有人需要,我总算找到了答案。这类OAU的例外情况是
190
。可以从引发的异常中获取,如下所示:


$e->getCode()

万一有人需要,我总算找到了答案。这类OAU的例外情况是
190
。可以从引发的异常中获取,如下所示:


$e->getCode()

对不起,这不是我问题的答案。当然,我要将每个API调用包装在一个try-catch块中!问题是,对于这种身份验证问题,要捕获的确切例外情况是什么……对不起,这不是我问题的答案。当然,我要将每个API调用包装在一个try-catch块中!问题是,对于这类身份验证问题,要捕获的确切例外情况是什么。。。