存取憑證:除錯和錯誤處理

獲取有關憑證與除錯的資訊

在使用存取憑證時,您可能需要查看與之相關的資訊,如該憑證的用戶或有效期。如要獲取此類資訊,您可使用我們的除錯工具,或使用 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 應用程式的憑證錯誤

iOS SDK 的 API 錯誤通常會在傳遞至回調的 NSError 實例中出現。請參閱 iOS SDK 錯誤文件,以了解更多詳情。

處理 Android 應用程式的憑證錯誤

Android SDK 的 API 錯誤通常會在傳遞至 Response 回調的 Requests 物件中出現。具體而言,您可調用 response.getError() 以擷取 FacebookRequestError 實例。

了解詳情

您可查閱 API 錯誤參考資料以了解更多錯誤,但以上這三個錯誤是處理存取憑證時最為常見的錯誤。