当offline_access令牌无效时,Facebook OAuthException

时间:2012-02-15 11:37:04

标签: facebook exception-handling facebook-oauth

我知道即使从Facebook获取的offline_access令牌也可能无效(例如,如果用户更改了密码)。在这种情况下,我需要捕获抛出的异常,并为我的网站用户再次授权。

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

我的计划是:更改base_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;
  }

2 个答案:

答案 0 :(得分:0)

不要改变SDK,而是像

一样在它上面写一个包装器
try{

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

}
catch($e){

//Error Handling
}

答案 1 :(得分:0)

如果有人需要,我会以某种方式找到答案。这类OAuthException的异常是190。可以从这样的抛出异常中得到:

$ E->引用代码();