การจัดการสิทธิ์การอนุญาตสำหรับ Android

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

  • ช่องโปรไฟล์สาธารณะเริ่มต้น - ให้สิทธิ์การเข้าถึงข้อมูลโปรไฟล์พื้นฐาน

  • สิทธิ์ในการอ่าน - สิทธิ์ในการอ่านอื่นๆ จะรักษาความปลอดภัยให้กับข้อมูลอื่นๆ ทั้งหมดที่ผู้ใช้ได้เพิ่มลงในโปรไฟล์ Facebook ของตน

  • สิทธิ์ในการเขียน - แอพจำเป็นต้องแยกสิทธิ์ในการเผยแพร่เพื่อโพสต์เนื้อหาในนามของผู้ใช้

วิธีจัดการสิทธิ์การอนุญาตในแอพของคุณสามารถทำได้ ดังนี้

  • เมื่อแอพของคุณส่งคำขอ Facebook ให้กับบุคคลอื่น ควรมีการตรวจสอบสิทธิ์การอนุญาตที่จำเป็นและขอสิทธิ์หากจำเป็น

  • แอพของคุณต้องรับมือกับข้อผิดพลาดด้านสิทธิ์การอนุญาตที่ขาดหายจาก Facebook เช่น โดยขอสิทธิ์การอนุญาตและลองใหม่

  • ผู้ใช้ที่ใช้แอพของคุณสามารถเพิกถอนสิทธิ์การอนุญาตบน Facebook ได้ แต่คุณสามารถดำเนินการนี้ได้ในแอพของคุณด้วย

  • คุณยังสามารถให้ผู้ใช้ลบสิทธิประโยชน์ในการเข้าสู่ระบบพื้นฐานจากแอพของคุณได้โดยวางกลไกในการเพิกถอนการเข้าสู่ระบบทั้งหมด

โปรดเรียนรู้เพิ่มเติมเกี่ยวกับสิทธิ์การอนุญาตต่างๆ ที่มีให้ใช้งานในคู่มือเกี่ยวกับสิทธิ์การอนุญาต

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

รับสิทธิ์การอนุญาตเพิ่มเติม

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

ในตอนนี้ เราจะได้ user_status คุณสามารถส่งสิทธิ์การอนุญาตเหล่านี้ไปยังปุ่ม LoginButton หรือ UI ที่กำหนดเองสำหรับการเข้าสู่ระบบและสิทธิ์การอนุญาตต่างๆ ได้

ให้แก้ไขโค้ดใน onCreateView() ในคลาส MainFragment ดังนี้

...
LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_status"));

return view;
...

รับสิทธิ์ในการอ่าน

LoginManager เป็นอินสแตนซ์แบบรายการเดียว และทำงานควบคู่กับ currentAccessToken ของ AccessToken หลังจากเข้าสู่ระบบเรียบร้อยแล้ว ระบบจะตั้งค่า currentAccessToken หากต้องการส่งคำขอสิทธิ์การอนุญาตเพิ่มเติม ก็ทำได้โดยเรียกใช้เมธอด logInWithPermissionName

เมธอด logInWithPermissionName จะเปิด UI ขึ้นมาและแจ้งผู้ใช้เพื่อขอสิทธิ์การอนุญาตเพิ่มเติมต่างๆ อยู่เสมอหากจำเป็น หากต้องการรับสิทธิ์การอนุญาตเพิ่มเติมจากผู้ใช้ โปรดส่งคำขอนี้ด้วย Facebook SDK สำหรับ Android

LoginManager.getInstance().logInWithReadPermissions(
    fragmentOrActivity,
    Arrays.asList("email"));

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

คุณสามารถส่งคำขอสิทธิ์ในการอ่านได้หลายรายการตามที่แสดงรายการอยู่ในข้อมูลอ้างอิงเกี่ยวกับสิทธิ์การอนุญาต

รับสิทธิ์ในการเผยแพร่

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

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

การส่งคำขอสิทธิ์ในการเผยแพร่ด้วย publish_actions ในระหว่างการเข้าสู่ระบบจะทำให้เกิดขั้นตอนที่ 2 ขึ้นมาใน UI การเข้าสู่ระบบ คุณจึงควรส่งคำขอสิทธิ์ในการอ่านขั้นต่ำในระหว่างเข้าสู่ระบบ จากนั้นจึงส่งคำขอสิทธิ์การอนุญาตเพิ่มเติมหรือสิทธิ์ในการเผยแพร่เมื่อผู้ใช้ต้องใช้สิทธิ์นั้นจริงๆ หากต้องการปรับคำขอสิทธิ์การอนุญาตให้เหมาะสม โปรดดูการปรับสิทธิ์การอนุญาตให้เหมาะสม

คุณสามารถใช้ LoginManager เพื่อขอสิทธิ์ในการเผยแพร่ในแอพได้

LoginManager.getInstance().logInWithPublishPermissions(
    fragmentOrActivity,
    Arrays.asList("publish_actions"));

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

การขอสิทธิ์การอนุญาตซ้ำ

ผู้ใช้สามารถมอบสิทธิ์การอนุญาตเพียงบางส่วนจากที่คุณร้องขอไว้ได้ โดยยกเว้น public profile ซึ่งจะต้องมอบในระหว่างการเข้าสู่ระบบ

หากต้องการรับรายการสิทธิ์การอนุญาตที่เกี่ยวข้องกับโทเค็นการเข้าถึงปัจจุบัน ให้เรียกใช้โค้ดต่อไปนี้

AccessToken.getCurrentAccessToken().getPermissions();

หากต้องการรับรายการสิทธิ์การอนุญาตที่ถูกปฏิเสธ ให้เรียกใช้โค้ดต่อไปนี้

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

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

การตรวจพิจารณาการเข้าสู่ระบบ

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

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

คู่มือการตรวจพิจารณาการเข้าสู่ระบบ