โทเค็นการเข้าถึง: การแก้ไขจุดบกพร่องและการจัดการกับข้อผิดพลาด

การรับข้อมูลเกี่ยวกับโทเค็นและการแก้ไขจุดบกพร่อง

เมื่อทำงานกับโทเค็นการเข้าถึง คุณอาจต้องตรวจสอบว่ามีข้อมูลใดบ้างที่เกี่ยวข้อง เช่น ผู้ใช้หรือการหมดอายุ หากต้องการรับข้อมูลนี้ คุณสามารถใช้เครื่องมือแก้ไขจุดบกพร่อง หรือคุณสามารถใช้ตำแหน่งข้อมูล API ได้

หากต้องการใช้ API คุณสามารถออกคำขอ 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 จะไม่แจ้งให้คุณทราบว่าโทเค็นการเข้าถึงนั้นไม่ถูกต้อง แอพของคุณอาจเรียนรู้ว่าโทเค็นที่ให้ไว้นั้นไม่ถูกต้องก็ต่อเมื่อคุณพยายามส่งคำขอไปยัง API เท่านั้น ยกเว้นว่าคุณได้ส่งเวลา expiry ไปยังแอพของคุณพร้อมกับโทเค็นการเข้าถึง

โทเค็นการเข้าถึงอาจเป็นโมฆะก่อนเวลาหมดอายุที่คาดไว้เนื่องจากเหตุการณ์ที่เกี่ยวข้องกับการรักษาความปลอดภัย

ในแอพส่วนใหญ่ วิธีที่ดีที่สุดในการจัดการโทเค็นที่หมดอายุคือการจับข้อความแสดงข้อผิดพลาดที่ส่งมาจาก 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

ข้อผิดพลาด API ใน iOS SDK มักจะปรากฏผ่านอินสแตนซ์ NSError ที่ส่งไปยังการเรียกกลับ โปรดดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบข้อผิดพลาดของ iOS SDK

การจัดการข้อผิดพลาดของโทเค็นในแอพ Android

ข้อผิดพลาด API ใน Android SDK มักจะปรากฏผ่านอ็อบเจ็กต์ Response ที่ส่งไปยังการเรียกกลับของ Requests กล่าวโดยเจาะจงคือคุณสามารถเรียก response.getError() เพื่อเรียกใช้อินสแตนซ์ FacebookRequestError ได้

เรียนรู้เพิ่มเติม

คุณสามารถอ่านเกี่ยวกับข้อผิดพลาดเพิ่มเติมได้ในข้อมูลอ้างอิงข้อผิดพลาด API แต่ข้อผิดพลาดสามข้อนี้เป็นข้อผิดพลาดที่พบบ่อยที่สุดเมื่อจัดการกับโทเค็นการเข้าถึง