Mã truy cập: Gỡ lỗi và xử lý lỗi

Nhận thông tin về mã và cách gỡ lỗi

Khi dùng mã truy cập, bạn có thể cần kiểm tra xem thông tin nào được liên kết với mã này, chẳng hạn như người dùng hoặc thời gian hết hạn. Để có được thông tin này, bạn có thể sử dụng công cụ gỡ lỗi của chúng tôi hoặc điểm cuối API.

Để sử dụng API, bạn có thể thực hiện yêu cầu API Đồ thị:

curl -i -X GET "https://graph.facebook.com/debug_token?
  input_token={input-token}&
  access_token={valid-access-token}

Thay {input-token} bằng mã truy cập mà bạn muốn nhận thông tin và {access-token} bằng mã truy cập hợp lệ. Các mã này phải của cùng một ứng dụng.

Lệnh gọi API trả về mảng JSON có dạng như sau:

{ "data":{ "app_id":"{app-id}", "type":"USER", "application":"{app-name}", "data_access_expires_at":1576687825, "expires_at":1570820400, "is_valid":true, "scopes":[ "pages_show_list", "public_profile" ], "granular_scopes":[ { "scope":"pages_show_list", "target_ids":[ "{page-1-app-can-access-id}", "{page-2-app-can-access-id}" ] } ], "user_id":"10215241773831025" } } 

Đối với mã truy cập dài hạn, lệnh cũng trả về trường thông tin issued_at.

Xử lý lỗi

Facebook sẽ không thông báo cho bạn biết mã truy cập không còn hợp lệ. Nếu bạn không gửi thời gian expiry cùng với mã truy cập cho ứng dụng thì chỉ khi bạn tìm cách thực hiện yêu cầu đến API, ứng dụng mới biết rằng một mã nhất định không còn hợp lệ.

Do các sự kiện liên quan đến bảo mật, mã truy cập có thể bị vô hiệu hóa trước thời gian hết hạn dự kiến.

Trong hầu hết các ứng dụng, cách tốt nhất để xử lý các mã đã hết hạn là tìm hiểu các thông báo lỗi do API trả về. Trong mỗi trường hợp, API sẽ trả về thông báo lỗi, mã và mã phụ trong phần nội dung ở định dạng JSON giải thích bản chất của lỗi. Hãy xem phần tài liệu tham khảo về mã lỗi để biết thêm thông tin về mã và mã phụ.

Mã truy cập không hợp lệ hoặc hết hạn

Phản hồi mẫu cho mã hết hạn

{
  "error": {
    "message": "Error validating access token: Session has expired on Wednesday, 14-Feb-18 18:00:00 PST. The current time is Thursday, 15-Feb-18 13:46:35 PST.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

Phản hồi mẫu cho mã đã bị vô hiệu hóa

Phản hồi này được trả về khi một người đăng xuất khỏi ứng dụng của bạn hoặc thay đổi mật khẩu của họ.

{
  "error": {
    "message": "Error validating access token: The session is invalid 
                because the user logged out.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 460,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

Người này sẽ phải đăng nhập lại để nhận mã truy cập hợp lệ để bạn có thể thay mặt họ thực hiện các lệnh gọi API. Luồng đăng nhập mà ứng dụng của bạn sử dụng cho người dùng mới sẽ cho biết bạn cần áp dụng phương pháp nào.

Phản hồi mẫu cho lỗi ủy quyền ứng dụng

Khi ai đó đã hủy quyết định ủy quyền hoặc chưa bao giờ ủy quyền cho ứng dụng, phản hồi lỗi sẽ giống như đối với người mới dùng ứng dụng của bạn.

Phản hồi mẫu cho mã bị hủy cấp quyền

{
  "error": {
    "message": "Error validating access token: User {user-id} has 
                not authorized application {your-app-id}.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 458,
    "fbtrace_id": "H2il2t5bn4e"
  }
}
}

Xử lý lỗi mã trong ứng dụng iOS

Lỗi API trong iOS SDK thường xuất hiện trong những trường hợp truyền NSError cho các lệnh gọi lại. Hãy xem tài liệu khắc phục lỗi iOS SDK để biết thêm chi tiết.

Xử lý lỗi mã trong ứng dụng Android

Lỗi API trong Android SDK thường xuất hiện trong trường hợp truyền đối tượng Response cho lệnh gọi lại của Requests. Cụ thể, bạn có thể gọi response.getError() để truy xuất trường hợp FacebookRequestError.

Tìm hiểu thêm

Bạn có thể đọc về các lỗi khác trong tài liệu tham khảo về Lỗi API của chúng tôi nhưng ba lỗi này là những lỗi phổ biến nhất khi xử lý các mã truy cập.