เมื่อทำงานกับโทเค็นการเข้าถึง คุณอาจต้องตรวจสอบว่ามีข้อมูลใดบ้างที่เกี่ยวข้อง เช่น ผู้ใช้หรือการหมดอายุ หากต้องการรับข้อมูลนี้ คุณสามารถใช้เครื่องมือแก้ไขจุดบกพร่อง หรือคุณสามารถใช้ตำแหน่งข้อมูล 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" } } }
ข้อผิดพลาด API ใน iOS SDK มักจะปรากฏผ่านอินสแตนซ์ NSError
ที่ส่งไปยังการเรียกกลับ โปรดดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบข้อผิดพลาดของ iOS SDK
ข้อผิดพลาด API ใน Android SDK มักจะปรากฏผ่านอ็อบเจ็กต์ Response
ที่ส่งไปยังการเรียกกลับของ Requests
กล่าวโดยเจาะจงคือคุณสามารถเรียก response.getError()
เพื่อเรียกใช้อินสแตนซ์ FacebookRequestError
ได้
คุณสามารถอ่านเกี่ยวกับข้อผิดพลาดเพิ่มเติมได้ในข้อมูลอ้างอิงข้อผิดพลาด API แต่ข้อผิดพลาดสามข้อนี้เป็นข้อผิดพลาดที่พบบ่อยที่สุดเมื่อจัดการกับโทเค็นการเข้าถึง