การเลือกข้อมูลที่แอพต้องการเข้าถึงคือส่วนที่สำคัญที่สุดอย่างหนึ่งในการเปิดกล่องการเข้าสู่ระบบ ตัวอย่างเหล่านี้ทั้งหมดต่างก็ใช้พารามิเตอร์ scope
โดยเป็นวิธีขอการเข้าถึงข้อมูลของผู้ใช้ ซึ่งทั้งหมดนี้เรียกว่าสิทธิ์การอนุญาต
เราได้อธิบายเรื่องสิทธิ์การอนุญาตอย่างละเอียดไว้แล้วในคู่มือสิทธิ์การอนุญาตของเรา อย่างไรก็ตาม ยังมีข้อควรจำเล็กๆ น้อยๆ เมื่อใช้สิทธิ์การอนุญาตและกล่องการเข้าสู่ระบบ ดังนี้:
email
ต้องได้รับการตรวจสอบจาก Facebook ก่อนเผยแพร่สู่สาธารณะ โปรดเรียนรู้เพิ่มเติมในเอกสารของเราเกี่ยวกับการตรวจสอบการเข้าสู่ระบบและแนวทางการตรวจสอบทั่วไปของเราหนึ่งในหลักปฏิบัติที่ดีที่สุดในการเข้าสู่ระบบด้วย Facebook คือการไม่ขอสิทธิ์ในการอ่านและสิทธิ์ในการเผยแพร่พร้อมกัน เพื่อที่จะรองรับ แอพของคุณสามารถขอสิทธิ์การอนุญาตเพิ่มเติมในภายหลังได้ หลังจากมีผู้ใช้เข้าสู่ระบบแล้ว หากต้องการทำเช่นนั้น คุณเพียงแค่ต้องเปิดกล่องการเข้าสู่ระบบด้วยสิทธิ์การอนุญาตใหม่ที่คุณจะขอ
เช่น สมมติว่าคุณมีปุ่มเข้าสู่ระบบพร้อมสิทธิ์การอนุญาตต่อไปนี้:
<fb:login-button scope="public_profile" onlogin="checkLoginState();"> </fb:login-button>
และหากคุณทำเครื่องหมาย /me/permissions
กับสิทธิ์การอนุญาตที่ได้รับหลังจากผู้ใช้ยอมรับแล้ว ระบบจะแสดงผลดังนี้:
{"data": [ { "permission":"public_profile", "status":"granted" } ] }
หากคุณต้องการเพิ่มสิทธิ์การอนุญาต email
ในภายหลัง คุณก็สามารถเปิดใหม่ได้ด้วยฟังก์ชัน FB.login()
ดังนี้:
FB.login(function(response) { console.log(response); }, {scope: 'email'});
(ต้องเรียกฟังก์ชันนี้จากตัวจัดการเหตุการณ์ของปุ่ม มิฉะนั้นตัวบล็อกป๊อปอัพของเบราว์เซอร์อาจบล็อกฟังก์ชันนี้ได้)
โปรดทราบว่าระบบจะขอสิทธิ์การอนุญาตใหม่เท่านั้น หากคุณยอมรับสิทธิ์การอนุญาตใหม่ การทำเครื่องหมาย /me/permissions
จะส่งผลดังนี้:
{"data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"email", "status":"granted" } ] }
โปรดทราบว่ามีการเพิ่มสิทธิ์การอนุญาต email
ใหม่ลงในรายการของสิทธิ์การอนุญาตที่ได้รับแล้ว
การเข้าสู่ระบบด้วย Facebook ช่วยให้ผู้ใช้สามารถปฏิเสธการแชร์สิทธิ์การอนุญาตบางอย่างกับแอพของคุณได้ หากผู้ใช้บางคนเลือกปฏิเสธ user_likes
(การกดถูกใจ) การทำเครื่องหมาย /me/permissions
กับสิทธิ์การอนุญาตที่ได้รับจะส่งผลดังนี้:
{ "data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"user_likes", "status":"declined" } ] }
โปรดทราบว่าผู้ใช้ได้ปฏิเสธ user_likes
แทนที่จะให้สิทธิ์
คุณสามารถขอให้ผู้ใช้มอบสิทธิ์การอนุญาตที่เคยปฏิเสธไปแล้วกับแอพของคุณอีกครั้งหนึ่งได้ คุณควรมีหน้าจอที่อธิบายเหตุผลที่คุณคิดว่าผู้ใช้ควรให้สิทธิ์การอนุญาต จากนั้นจึงขอสิทธิ์การอนุญาตอีกครั้ง แต่หากคุณใช้วิธีการที่อธิบายในส่วนก่อนหน้า กล่องการเข้าสู่ระบบจะไม่ขอสิทธิ์การอนุญาตนั้น
ทั้งนี้เนื่องจากเมื่อผู้ใช้ปฏิเสธสิทธิ์การอนุญาตแล้ว กล่องการเข้าสู่ระบบจะไม่ขอสิทธิ์นั้นอีกจนกว่าคุณจะแจ้งกล่องโต้ตอบอย่างชัดแจ้งว่าคุณกำลังขอสิทธิ์การอนุญาตที่ถูกปฏิเสธอีกครั้ง
คุณจะดำเนินการได้โดยการเพิ่มสถานะ auth_type: rerequest
ไปยังการเรียก FB.login()
ของคุณ:
FB.login( function(response) { console.log(response); }, { scope: 'user_likes', auth_type: 'rerequest' } );
เมื่อดำเนินการตามนั้น กล่องการเข้าสู่ระบบจะขอสิทธิ์การอนุญาตที่ถูกปฏิเสธอีกครั้ง โดยกล่องโต้ตอบจะมีลักษณะเหมือนกับกล่องโต้ตอบในส่วนการขอสิทธิ์การอนุญาตอีกครั้ง แต่จะช่วยให้คุณขอสิทธิ์การอนุญาตที่ถูกปฏิเสธอีกครั้งได้