ขั้นตอนการเข้าสู่ระบบแต่ละประเภทจะมีวิธีการส่งคำขอสิทธิ์การอนุญาตแตกต่างกันไป โดยขึ้นอยู่กับแพลตฟอร์มของคุณและวิธีที่คุณเลือกในการผสานการทำงานการเข้าสู่ระบบด้วย Facebook ดังนี้
scope
พร้อมการเรียกใช้ฟังก์ชั่น FB.login
scope
ไปยัง URL ของกล่องการเข้าสู่ระบบที่เป็นปลายทางของการเปลี่ยนเส้นทางscope
เมื่อเริ่มดำเนินการเชื่อมโยง URIโปรดทราบว่า คุณสามารถใช้ API จำนวนมากในรายการข้างต้นเพื่อขอสิทธิ์การอนุญาตเพิ่มเติมในภายหลังได้ตลอดช่วงอายุการใช้งานของแอพ ไม่ใช่เพียงเมื่อเข้าสู่ระบบครั้งแรกเท่านั้น
ตามกฎโดยทั่วไปแล้ว ยิ่งแอพส่งคำขอสิทธิ์การอนุญาตมากเท่าใด ผู้คนก็จะมีแนวโน้มลดน้อยลงที่จะใช้ Facebook เพื่อเข้าสู่ระบบแอพของคุณ อันที่จริงแล้ว งานวิจัยของเราแสดงให้เห็นว่า แอพที่ขอสิทธิ์การอนุญาตมากกว่า 4 รายการ จะมีจำนวนการเข้าสู่ระบบที่เสร็จสมบูรณ์น้อยลงอย่างเห็นได้ชัด
แนวทางบางส่วนที่ควรใช้เมื่อขอสิทธิ์การอนุญาตทั้งในระหว่างและหลังการเข้าสู่ระบบ มีดังต่อไปนี้
ขอเฉพาะสิทธิ์การอนุญาตที่จำเป็นต่อแอพเท่านั้น
ขอสิทธิ์การอนุญาตในบริบทที่จำเป็นต้องใช้สิทธิ์การอนุญาตเหล่านั้น ตัวอย่างเช่น หากแอพของคุณต้องการแสดงสถานที่น่าสนใจต่างๆ ซึ่งอยู่ใกล้ตำแหน่งของผู้ใช้ การขอ user_location
ก่อนแสดงข้อมูลนั้นไม่นานจะช่วยให้ผู้ใช้เข้าใจถึงสาเหตุที่คุณส่งคำขอสิทธิ์การอนุญาตดังกล่าวได้มากยิ่งขึ้น
แยกคำขอสิทธิ์ในการอ่านกับสิทธิ์ในการเผยแพร่ออกจากกัน โปรดดูรายละเอียดเพิ่มเติมที่ด้านล่าง
ห้ามขอสิทธิ์การอนุญาตโดยคิดเผื่อว่าอาจต้องใช้ในอนาคต เพราะผู้ใช้จะรู้สึกเคลือบแคลงใจและอาจปฏิเสธแอพของคุณได้
แจ้งให้ผู้ใช้ทราบล่วงหน้าถึงสาเหตุที่คุณส่งคำขอสิทธิ์การอนุญาต การอธิบายถึงสาเหตุที่คุณจำเป็นต้องเข้าถึงข้อมูลบางอย่างจะช่วยเพิ่มโอกาสที่ผู้ใช้จะเต็มใจแชร์ข้อมูลเหล่านั้น
แอพควรแยกคำขอสิทธิ์ในการอ่านกับสิทธิ์ในการเผยแพร่ออกจากกัน วางแผนให้แอพของคุณส่งคำขอสิทธิ์ในการอ่านให้น้อยที่สุดในระหว่างการเข้าสู่ระบบครั้งแรก จากนั้นจึงขอสิทธิ์ในการเผยแพร่เมื่อผู้ใช้จำเป็นต้องใช้สิทธิ์การอนุญาตเหล่านั้น เช่น เมื่อผู้ใช้ต้องการสร้างข้อมูล Open Graph จากภายในแอพ การดำเนินการเช่นนี้จะช่วยให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุดและปรับคอนเวอร์ชั่นให้เหมาะสม
คุณอาจได้รับการแจ้งเตือนสำหรับผู้พัฒนา หากแอพของคุณส่งคำขอสิทธิ์ในการอ่านและสิทธิ์ในการเผยแพร่ติดต่อกัน หากไม่ต้องการให้มีการแจ้งเตือนเหล่านี้ ให้แยกคำขอของคุณออกจากกัน และปฏิบัติตามแนวทางด้านล่างสำหรับกรณีพิเศษต่างๆ
ในกรณีที่แอพของคุณจำเป็นต้องมีสิทธิ์ในการเผยแพร่ล่วงหน้า (ตัวอย่างเช่น แอพที่ไม่ได้มีฟังก์ชั่นอื่นใดนอกจากเผยแพร่อารมณ์ของผู้ใช้ไปยัง Facebook) ซึ่งพบได้ไม่บ่อยนัก ให้ส่งคำขอสิทธิ์ในการอ่านเฉพาะที่จำเป็นให้น้อยที่สุดในระหว่างการเข้าสู่ระบบครั้งแรก หลังจากที่ผู้ใช้เข้าสู่ระบบ ให้แสดงหน้าจอที่อธิบายถึงสาเหตุที่แอพของคุณจำเป็นต้องใช้สิทธิ์ในการเผยแพร่แก่ผู้ใช้ และเปิดให้ผู้ใช้คลิกปุ่มเพื่อตอบรับคำขอสิทธิ์ในการเผยแพร่ได้ การดำเนินการเช่นนี้จะช่วยให้ผู้ใช้มีบริบทเพิ่มขึ้นและปรับปรุงคอนเวอร์ชั่นของคุณ
กรณีหนึ่งที่คุณอาจจำเป็นต้องส่งคำขอสิทธิ์ในการอ่านและสิทธิ์ในการเขียนต่อเนื่องกัน คือครั้งแรกที่คุณเชื่อมโยงบัญชีแบบใช้อีเมลเข้ากับบัญชี Facebook ของผู้ใช้ การดำเนินการเช่นนี้มักเกิดขึ้นเมื่อมีคนต้องการแชร์สตอรี่บนไทม์ไลน์ Facebook ของตน เมื่อแอพของคุณสร้างกล่องการเข้าสู่ระบบ ผู้ใช้จะเห็นกล่องโต้ตอบติดต่อกัน 2 กล่อง โดยกล่องหนึ่งจะเชื่อมต่อบัญชีของผู้ใช้เข้ากับแอพของคุณ ส่วนอีกกล่องหนึ่งจะขอสิทธิ์ในการเผยแพร่ ในกรณีนี้ ให้ตรวจสอบให้แน่ใจว่าสิทธิ์ในการอ่านรายการเดียวที่คุณส่งคำขอก็คือ public_profile การดำเนินการเช่นนี้จะช่วยให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด เนื่องจากผู้ใช้ต้องการที่จะเผยแพร่จากแอพของคุณและมักไม่สนใจที่จะให้สิทธิ์ในการอ่านเพิ่มเติม นอกจากนี้ยังช่วยปรับปรุงคอนเวอร์ชั่นให้คุณอีกด้วย
Facebook เปิดให้ผู้ใช้สามารถควบคุมสิทธิ์การอนุญาตที่ตนให้แก่แอพได้อย่างเต็มรูปแบบ ซึ่งการควบคุมนี้ขยายครอบคลุมไปไกลเกินกว่าจุดที่ผู้ใช้เห็นกล่องการเข้าสู่ระบบ ผู้ใช้สามารถเลือกไม่ให้สิทธิ์การอนุญาตบางอย่างในระหว่างกระบวนการเข้าสู่ระบบได้ นอกจากนี้ ผู้ใช้ยังเพิกถอนสิทธิ์การอนุญาตในการตั้งค่าความเป็นส่วนตัวของ Facebook ของตนได้ทุกเมื่ออีกด้วย แอพควรตรวจสอบดูการใช้งานได้ของสิทธิ์การอนุญาตก่อนพยายามเรียกใช้ API ในกรณีที่จำเป็น ตัวอย่างเช่น การตรวจสอบว่าผู้ใช้ยังคงให้ email
อยู่หรือไม่ก่อนที่จะส่งข้อความ
ในส่วนของแอพบนเว็บ เรามอบตำแหน่งข้อมูล API กราฟในการเรียกดูรายการสิทธิ์การอนุญาตที่ผู้ใช้ให้ไว้ดังนี้
GET /{user-id}/permissions
การเรียกใช้ดังกล่าวนี้ต้องเกิดขึ้นร่วมกับโทเค็นการเข้าถึงผู้ใช้หรือโทเค็นการเข้าถึงแอพของคุณ การเรียกใช้นี้จะแสดงสตริง JSON ที่ประกอบด้วยชื่อสิทธิ์การอนุญาตที่แอพได้รับ รวมถึงสถานะของสิทธิ์การอนุญาตเหล่านั้น ดังนี้
{ "data": [ { "permission": "public_profile", "status": "granted" }, { "permission": "email", "status": "granted" }, { "permission": "user_friends", "status": "declined" } ] }
นอกจากนี้ เรายังให้เมธอดใน iOS SDK และ Android SDK ซึ่งช่วยให้มีการแสดงสิทธิ์การอนุญาตต่างๆ ที่แอพของคุณได้รับในลักษณะที่เหมาะสมกับแพลตฟอร์มอีกด้วย
เมื่อแอพส่งคำขอสิทธิ์การอนุญาต ผู้ใช้อาจปฏิเสธสิทธิ์การอนุญาตเหล่านั้นทั้งหมด ให้สิทธิ์การอนุญาตเหล่านั้นไม่ครบทั้งหมด หรือเปลี่ยนแปลงในภายหลังก็ได้ แอพควรได้รับการพัฒนาขึ้นมาให้รับมือกับสถานการณ์เหล่านี้ได้ จึงจะสามารถมอบประสบการณ์การใช้งานที่ยอดเยี่ยม
ก่อนอื่น แอพควรสามารถจัดการกับสิทธิ์การอนุญาตทั้งหมดมีการร้องขอไปแต่ผู้ใช้ไม่ได้ให้ดังนี้
{ "error": { "message": "(#200) The user hasn't authorized the application to perform this action", "type": "OAuthException", "code": 200 } }
ทันทีที่แอพตรวจพบว่ามีผู้ปฏิเสธสิทธิ์การอนุญาตบางรายการหรือทั้งหมด แอพอาจส่งผู้ใช้กลับไปดำเนินขั้นตอนการเข้าสู่ระบบอีกหนึ่งครั้ง และส่งคำขอสิทธิ์การอนุญาตทั้งหมดที่จำเป็น อย่างไรก็ตาม นี่ไม่ใช่ประสบการณ์ที่ดี และคุณควรหลีกเลี่ยงหากทำได้ หากผู้ใช้บางคนตั้งใจเลือกที่จะไม่ให้สิทธิ์การอนุญาตที่เฉพาะเจาะจงแก่แอพ ผู้ใช้เหล่านี้ไม่มีแนวโน้มที่จะเปลี่ยนใจ แม้จะได้รับข้อความแจ้งอย่างต่อเนื่องก็ตาม โดยให้คุณทำสิ่งต่อไปนี้แทน
หากผู้ใช้ปฏิเสธ กล่องการเข้าสู่ระบบจะแสดงคำอธิบายที่ชัดเจนและตรงประเด็นถึงสาเหตุที่คุณส่งคำขอสิทธิ์การอนุญาตแต่ละรายการ จากนั้น ให้ผู้ใช้คลิกหรือแตะเพื่อเลือกกลับมายังกล่องโต้ตอบคำขอสิทธิ์การอนุญาต อย่าเปลี่ยนเส้นทางผู้ใช้ไปยังกล่องโต้ตอบคำขอสิทธิ์การอนุญาตในทันทีโดยที่ยังไม่ได้ให้คำอธิบาย
หากมีผู้ปฏิเสธสิทธิ์การอนุญาตสำหรับแอพของคุณ กล่องการเข้าสู่ระบบจะไม่อนุญาตให้แอพของคุณส่งคำขอสิทธิ์การอนุญาตอีกครั้ง เว้นแต่คุณจะส่ง auth_type=rerequest
ไปกับคำขอของคุณด้วย
ในกรณีที่มีผู้ให้สิทธิ์การอนุญาตบางรายการ แต่ไม่ให้สิทธิ์การอนุญาตอื่นๆ ด้วย ให้แสดงข้อความแจ้งเฉพาะสำหรับสิทธิ์การอนุญาตที่ขาดหายไป โดยแสดงในจุดที่จำเป็นต้องใช้สิทธิ์การอนุญาตนั้น ตัวอย่างเช่น หากแอพของคุณส่งการยืนยันคำสั่งซื้อไปยังอีเมลของผู้ใช้ ให้ส่งคำขอเฉพาะ email
เมื่อผู้ใช้ดำเนินการสั่งซื้อ
ให้ผู้ใช้ยังคงใช้งานแอพของคุณต่อไปได้โดยไม่ต้องให้สิทธิ์การอนุญาต เว้นแต่ว่าสิทธิ์การอนุญาตที่คุณส่งคำขอไปในกล่องการเข้าสู่ระบบจะจำเป็นอย่างยิ่งต่อฟังก์ชั่นการทำงานของแอพและฟีเจอร์จะใช้งานไม่ได้หากไม่มีสิทธิ์การอนุญาตนั้นๆ
คุณอาจได้รับการแจ้งเตือนสำหรับผู้พัฒนา หากแอพของคุณนำผู้ใช้ไปยังกล่องโต้ตอบสิทธิ์การอนุญาตซ้ำหลายครั้งหลังจากที่ผู้ใช้ปฏิเสธสิทธิ์การอนุญาตต่างๆ หากไม่ต้องการให้มีการแจ้งเตือนดังกล่าว ให้ปฏิบัติตามแนวทางเหล่านี้
แอพสามารถเปิดให้ผู้ใช้เพิกถอนสิทธิ์การอนุญาตที่ตนเคยให้ไว้ก่อนหน้านี้ได้ ตัวอย่างเช่น แอพของคุณอาจมีหน้าการตั้งค่าที่ช่วยให้ผู้ใช้สามารถปิดใช้งานการส่งข้อความหาตนทางอีเมล นอกจากนี้ หน้าการตั้งค่านี้อาจเพิกถอนสิทธิ์การอนุญาต email
ในเวลาเดียวกันได้อีกด้วย
คุณสามารถเพิกถอนสิทธิ์การอนุญาตที่เฉพาะเจาะจงได้โดยการเรียกใช้ไปยังตำแหน่งข้อมูล API กราฟ ดังนี้
DELETE /{user-id}/permissions/{permission-name}
คำขอนี้ต้องเกิดขึ้นร่วมกับโทเค็นการเข้าถึงผู้ใช้หรือโทเค็นการเข้าถึงแอพสำหรับแอพปัจจุบัน หากคำขอดังกล่าวสำเร็จ คุณจะได้รับการตอบกลับว่า true
นอกจากนี้ คุณยังสามารถเปิดให้ผู้ใช้ยกเลิกการให้อนุญาตแก่แอพหรือเพิกถอนการเข้าสู่ระบบอย่างสิ้นเชิงได้ โดยทำการเรียกใช้ไปยังตำแหน่งข้อมูล API กราฟนี้ ดังนี้
DELETE /{user-id}/permissions
คำขอนี้ต้องเกิดขึ้นร่วมกับโทเค็นการเข้าถึงผู้ใช้หรือโทเค็นการเข้าถึงแอพที่ถูกต้องสำหรับแอพปัจจุบัน หากคำขอดังกล่าวสำเร็จ แอพของคุณจะได้รับการตอบกลับว่า true
หากการเรียกใช้สำเร็จ ระบบจะทำให้โทเค็นการเข้าถึงผู้ใช้ทั้งหมดสำหรับผู้ใช้รายนั้นๆ ใช้การไม่ได้ และผู้ใช้จะต้องเข้าสู่ระบบอีกครั้ง นอกจากนี้ ผู้ใช้จะต้องให้สิทธิ์การเข้าถึงแก่แอพของคุณราวกับว่าผู้ใช้กำลังเข้าสู่ระบบเป็นครั้งแรกอีกด้วย นั่นเป็นเพราะคุณกำลังยกเลิกการให้อนุญาตกับแอพของคุณ