2012-02-15 3 views
2

Я знаю, что даже токен offline_access, полученный из Facebook, может быть недействительным (в случае, если пользователь изменил пароль, например). В этом случае мне нужно поймать заброшенное исключение и предложить пользователю моего сайта снова авторизоваться.Facebook OAuthException, когда токен 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; 
    } 

ответ

0

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

$ e-> getCode();

0

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

+0

извините, но это не ответ на мой вопрос. Конечно, я собирался обернуть каждый вызов API в блок try-catch! Вопрос был в том, что является единственным исключением для ловушек для таких проблем аутентификации ... – ArVan

 Смежные вопросы

  • Нет связанных вопросов^_^