在使用存取憑證時,您可能需要查看與之相關的資訊,如該憑證的用戶或有效期。如要獲取此類資訊,您可使用我們的除錯工具,或使用 API 端點。
如要使用 API,您可發出 Graph API 要求:
curl -i -X GET "https://graph.facebook.com/debug_token? input_token={input-token}& access_token={valid-access-token}
使用您想獲取與之相關資訊的存取憑證來取代 {input-token}
,並使用有效存取憑證來取代 {access-token}
。這些憑證必須來自相同的應用程式。
API 調用的回應為 JSON 陣列,如下所示:
{ "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" } }
如果是長期存取憑證,則系統也會傳回 issued_at
欄位。
Facebook 不會通知您存取憑證已失效。除非您已將 expiry
時間和存取憑證一併傳送至您的應用程式,否則您的應用程式可能僅會在您嘗試向 API 作出要求時,才知道特定憑證已失效。
為了安全起見,存取憑證或會在預計到期時間前失效。
在大多數應用程式中,處理過期憑證的最佳方式為擷取 API 擲回的錯誤訊息。在各種情況下,API 均會傳回錯誤訊息、代碼和用於解釋錯誤性質的 JSON 正文子代碼。如欲了解更多有關代碼與子代碼的資訊,請參閱錯誤代碼參考文件。
{ "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" } }
當用戶登出應用程式或更改密碼時,系統便會傳送此回應。
{ "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" } }
用戶需要再次登入,方可獲取有效存取憑證,並讓您代表他們執行 API 調用。您採用的方法應視乎應用程式為新用戶提供的登入流程而定。
當有人撤銷權限,或從未向您的應用程式授權時,錯誤回應會與應用程式新用戶的回應相同。
{ "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" } } }
iOS SDK 的 API 錯誤通常會在傳遞至回調的 NSError
實例中出現。請參閱 iOS SDK 錯誤文件,以了解更多詳情。
Android SDK 的 API 錯誤通常會在傳遞至 Response
回調的 Requests
物件中出現。具體而言,您可調用 response.getError()
以擷取 FacebookRequestError
實例。
您可查閱 API 錯誤參考資料以了解更多錯誤,但以上這三個錯誤是處理存取憑證時最為常見的錯誤。