Facebook SDK สำหรับ Android ช่วยให้ผู้ใช้เข้าสู่ระบบแอพของคุณด้วยการเข้าสู่ระบบด้วย Facebook เมื่อเข้าสู่ระบบแอพของคุณด้วย Facebook ผู้ใช้จะสามารถให้สิทธิ์การอนุญาตแก่แอพเพื่อให้คุณเรียกดูข้อมูลหรือดำเนินการต่างๆ บน Facebook แทนผู้ใช้ดังกล่าวได้
โปรดดูโปรเจ็กต์ตัวอย่างที่แสดงวิธีผสานการทำงานการเข้าสู่ระบบด้วย Facebook เข้ากับแอพ Android ที่ FBLoginSample บน GitHub
ทำตามขั้นตอนด้านล่างเพื่อเพิ่มการเข้าสู่ระบบด้วย Facebook ในแอพของคุณ
buildscript { repositories {}}
dependencies{}
เพื่อใช้ SDK การเข้าสู่ระบบด้วย Facebook ในเวอร์ชั่นล่าสุด หากคุณใช้ Facebook SDK สำหรับ Android เวอร์ชั่นตั้งแต่ 5.15 ขึ้นไป คุณก็ไม่จำเป็นต้องเพิ่มตัวกรองกิจกรรมหรือตัวกรองตามจุดประสงค์สำหรับแท็บที่กำหนดเองบน Chrome ฟังก์ชั่นการทำงานนี้รวมอยู่ใน SDK แล้ว
หลังจากใช้การเข้าสู่ระบบด้วย Facebook เหตุการณ์ในแอพบางเหตุการณ์จะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูรายละเอียดเกี่ยวกับข้อมูลที่จะได้รับการเก็บรวบรวมและวิธีปิดใช้งานการลงบันทึกเหตุการณ์ในแอพอัตโนมัติที่การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ
FacebookActivity
ไปยังไฟล์กำกับ Android ของคุณ /app/res/values/strings.xml
ของคุณstring
ที่มีชื่อ facebook_app_id
, fb_login_protocol_scheme
และ facebook_client_token
และตั้งค่าให้กับ ID ของแอพและโทเค็นของไคลเอ็นต์ของคุณ ตัวอย่างเช่น หาก ID ของแอพเป็น 1234
และโทเค็นของไคลเอ็นต์ของคุณเป็น 56789
โค้ดของคุณจะมีลักษณะดังต่อไปนี้ /app/manifest/AndroidManifest.xml
meta-data
ให้กับองค์ประกอบ application
สำหรับ ID ของแอพและโทเค็นของไคลเอ็นต์ของคุณดังนี้ application
ของคุณดังนี้ <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
uses-permission
ไปยังไฟล์กำกับหลังจากองค์ประกอบ application
ดังนี้ uses-permission
ให้กับไฟล์กำกับหลังจากองค์ประกอบ application
ดังนี้ คุณสามารถกำหนดการลงบันทึกเหตุการณ์ในแอพอัตโนมัติให้เป็น “true” หรือ “false” ได้โดยตรง โดยกำหนดรายงานปัญหา AutoLogAppEventsEnabled
ในไฟล์ AndroidManifest.xml
LoginButton
จาก SDK โดย LoginButton
เป็นองค์ประกอบ UI ที่จะล้อมฟังก์ชั่นการทำงานที่สามารถใช้งานได้ใน LoginManager
ดังนั้น เมื่อมีผู้คลิกปุ่ม การเข้าสู่ระบบจะเริ่มต้นขึ้นโดยใช้สิทธิ์การอนุญาตที่ตั้งค่าไว้ใน LoginManager
การเข้าสู่ระบบด้วย Facebook ต้องใช้สิทธิ์การอนุญาต public_profile ขั้นสูง ซึ่งจะใช้งานโดยผู้ใช้ภายนอก ปุ่มนี้จะอยู่หลังสถานะการเข้าสู่ระบบ และแสดงข้อความที่ถูกต้องตามสถานะการยืนยันตัวตนของผู้ใช้ CallbackManager.Factory.create
Login button
และระบุการเรียกกลับในเมธอด onCreate()
หรือ onCreateView()
ได้ คุณสมบัติที่ปรับแต่งได้มี LoginBehavior
, DefaultAudience
, ToolTipPopup.Style
และสิทธิ์การอนุญาตใน LoginButton
ตัวอย่างเช่น private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginManager
หรือ LoginButton
หากคุณระบุการเรียกกลับด้วย LoginButton
ก็ไม่จำเป็นต้องระบุการเรียกกลับในตัวจัดการการเข้าสู่ระบบ onCreate()
ของกิจกรรมหรือองค์ประกอบย่อยดังนี้ callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginResult
จะมี AccessToken
ใหม่และสิทธิ์การอนุญาตที่เพิ่งให้หรือปฏิเสธล่าสุด registerCallback
เพื่อให้การเข้าสู่ระบบสำเร็จ คุณสามารถเลือกติดตามการเปลี่ยนแปลงโทเค็นการเข้าถึงปัจจุบันด้วยคลาส AccessTokenTracker
ที่ระบุไว้ด้านล่างได้ callbackManager.onActivityResult
ในเมธอด onActivityResult
ของคุณ เพื่อส่งผ่านผลการเข้าสู่ระบบไปที่ LoginManager
ผ่าน callbackManager
หากคุณกำลังใช้งานกิจกรรมหรือองค์ประกอบย่อย AndroidX คุณไม่จำเป็นต้องเขียนทับ onActivityResult
onActivityResult
ไปยัง callbackManager
LoginManager
จะตั้งค่า AccessToken
ปัจจุบันและ Profile
ให้กับผู้ใช้นั้น FacebookSDK จะบันทึกข้อมูลนี้ในการกำหนดลักษณะที่แชร์ และตั้งค่าในระหว่างการเริ่มต้นช่วงเวลาที่ใช้งาน คุณจะเห็นได้ว่าผู้ใช้เข้าสู่ระบบหรือยังโดยตรวจสอบ AccessToken.getCurrentAccessToken()
และ Profile.getCurrentProfile()
AccessToken.getCurrentAccessToken
ด้วย SDK จากแคชหรือบุ๊กมาร์กของแอพเมื่อแอพเรียกเปิดจากการเริ่มต้นใหม่ คุณควรตรวจสอบความถูกต้องในวิธีการonCreate
ของ Activity
:queries
ในไฟล์ของคุณ /app/manifest/AndroidManifest.xml
โค้ดต่อไปนี้แสดงให้เห็นวิธีการเปิดใช้งานการเข้าสู่ระบบด่วน LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });