การส่งคำขอและการเพิกถอนสิทธิ์การอนุญาต

ขั้นตอนการเข้าสู่ระบบแต่ละประเภทจะมีวิธีการส่งคำขอสิทธิ์การอนุญาตแตกต่างกันไป โดยขึ้นอยู่กับแพลตฟอร์มของคุณและวิธีที่คุณเลือกในการผสานการทำงานการเข้าสู่ระบบด้วย Facebook ดังนี้

เว็บ

แอพมือถือ

โปรดทราบว่า คุณสามารถใช้ 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 ซึ่งช่วยให้มีการแสดงสิทธิ์การอนุญาตต่างๆ ที่แอพของคุณได้รับในลักษณะที่เหมาะสมกับแพลตฟอร์มอีกด้วย

การจัดการกับสิทธิ์การอนุญาตที่ขาดหายไป

เมื่อแอพส่งคำขอสิทธิ์การอนุญาต ผู้ใช้อาจปฏิเสธสิทธิ์การอนุญาตเหล่านั้นทั้งหมด ให้สิทธิ์การอนุญาตเหล่านั้นไม่ครบทั้งหมด หรือเปลี่ยนแปลงในภายหลังก็ได้ แอพควรได้รับการพัฒนาขึ้นมาให้รับมือกับสถานการณ์เหล่านี้ได้ จึงจะสามารถมอบประสบการณ์การใช้งานที่ยอดเยี่ยม

ก่อนอื่น แอพควรสามารถจัดการกับสิทธิ์การอนุญาตทั้งหมดมีการร้องขอไปแต่ผู้ใช้ไม่ได้ให้ดังนี้

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

คำแนะนำสำหรับแพลตฟอร์มต่างๆ

AndroidiOSเว็บ