2012-01-30 51 views
5

tôi nhận được lỗi này thỉnh thoảng:Lỗi Validating Truy cập Mã

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

Vấn đề là tôi nhận được nó ở thời điểm ngẫu nhiên, mà không có cảnh báo nào. Tôi có thể đi vài tuần mà không nhìn thấy nó, rồi đột nhiên nó sẽ xuất hiện. Giải pháp? Bạn có thể đợi nó. Nó ném lỗi này trong khoảng 15 phút sau đó bạn có thể làm mới và nó sẽ cho phép bạn tiếp tục với những gì bạn đang làm.

Câu hỏi của tôi là, đây có phải là vấn đề về phía tôi không? Hay đây là một vấn đề của Facebook? Đây là trang kết nối Facebook nếu có ích. Tôi đã nghiên cứu và phát hiện ra nó có thể được gây ra từ truy vấn FQL. Nhưng sau đó nó sẽ không được nhất quán ít nhất? Có vẻ như nó hoàn toàn ngẫu nhiên. Đây là truy vấn FQL của tôi anyway chỉ trong trường hợp.

$facebook->api(array('method' => 'fql.query','query' => "SELECT first_name,middle_name,last_name,email,affiliations FROM user WHERE uid=".$user)); 

Dưới đây là dòng 1052-1071 của 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; 

}

Cảm ơn bạn

+1

Đây chắc chắn là [lỗi Facebook] (https://developers.facebook.com/bugs/179301482177807). – brainondev

+1

Tôi muốn thêm rằng, lỗi này cũng xảy ra nếu người dùng đã vô hiệu hóa tài khoản của họ. – Chris

Trả lời

10

Theo văn bản trong How-To: Handle expired access tokens (liên kết bị tổn thương) phát triển bài đăng blog

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.

Trước khi chúng tôi có thể sử dụng quyền offline_access để nhận mã thông báo không hết hạn (trừ khi người dùng được kết nối với ứng dụng), quyền này hiện không được chấp nhận, hãy xem Deprecation of Offline Access Permission để xem cách bạn có thể nhận được access_token với thời gian hết hạn dài hơn.

Cập nhật:
Tính đến tháng 8 năm 2012 Facebook PHP-SDK have added simple way of extending access_token (xem How to extend access token validity since offline_access deprecation để biết thêm chi tiết)

Cập nhật 2: Lưu ý rằng gốc blog bài từ Facebook về thẻ đã hết hạn xử lý doesn' t tồn tại nữa. Có tài liệu mới hewever có thể được sử dụng để có được các chi tiết. https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

+1

Tất cả các liên kết của bạn cung cấp 'Không tìm thấy trang', Vui lòng cập nhật liên kết –

Các vấn đề liên quan