Facebook OAuthException, когда токен offline_access является недействительным - PullRequest
2 голосов
/ 15 февраля 2012

Я знаю, что даже токен offline_access, полученный из Facebook, может быть недействительным (например, если пользователь сменил пароль).В этом случае мне нужно перехватить выброшенное исключение и предложить пользователю моего сайта снова авторизоваться.

Так какой же точный код ошибки / сообщения выдается в этом случае?Я знаю, что это 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 голосов
/ 29 мая 2012

В случае, если кому-то это нужно, я как-то нашел ответ. Исключением для таких OAuthException является 190. Можно получить из брошенного исключения следующим образом:

$ e-> Получить код ();

0 голосов
/ 24 мая 2012

Вместо того, чтобы менять SDK, напишите обертку над ним как

try{

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

}
catch($e){

//Error Handling
}
...