2012-01-30 2 views
5

Я получаю эту ошибку иногда:Ошибка проверки достоверности доступа Токен

Fatal error: Uncaught Exception: 190: Error validating access token: This may be because the user logged out or may be due to a system error. thrown in ..base_facebook.php on line 1053

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

Вот строки 1052-1071 из Base_Facebook,

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; 

}

Спасибо

+1

Это определенно ошибка [Facebook] (https://developers.facebook.com/bugs/179301482177807). – brainondev

+1

Я хотел бы добавить, что эта ошибка также возникает, если пользователь отключил свою учетную запись. – Chris

ответ

10

Как написано в How-To: Handle expired access tokens (ссылка сломана) разработчиков блоге

Access tokens for users can become invalid due to various reasons. In most cases, they can expire if it’s past the time specified by the expires field (by default access token have a 2 hour lifetime). What many developers do not realize is that an access token can also expire if a user changes her password, logs out or if she de-authorizes the app via the App Dashboard. It is very important that your apps handle such situations. If your access token expires, you need to reacquire a valid access token.

Прежде чем мы сможем использовать offline_access разрешение на получение токена, который не истекает (если пользователь не подключен к приложению), это разрешение теперь устарело, см. Deprecation of Offline Access Permission, чтобы узнать, как вы можете получить access_token с более длительным сроком действия.

Update:
По состоянию на август 2012 года Facebook PHP-SDK have added simple way of extending access_token (см How to extend access token validity since offline_access deprecation для более подробной информации)

Update 2: Обратите внимание, что оригинальный блог-пост с Facebook о истёкшие лексемы обработки Безразлично» t существует больше. Существует новая документация, которая может быть использована для получения деталей. https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

+1

Ваши все ссылки дают «Страница не найдена», обновите ссылки –