เอกสารประกอบนี้จะอธิบายวิธีเริ่มผสานการทำงานแอพ Android ของคุณเข้ากับ Facebook โดยใช้ Facebook SDK สำหรับ Android Facebook SDK สำหรับ Android เวอร์ชั่นปัจจุบันคือเวอร์ชั่น 12.0.0 และต้องใช้ Android API 15 โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชั่นและฟีเจอร์ต่างๆ ที่ Facebook SDK สำหรับ Android
เมื่อคุณใช้ Facebook SDK เหตุการณ์บางอย่างในแอพของคุณจะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับ Facebook Analytics โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์โดยอัตโนมัติ สำหรับรายละเอียดเกี่ยวกับข้อมูลที่รวบรวมและวิธีปิดการบันทึกเหตุการณ์อัตโนมัติ โปรดดูการบันทึกเหตุการณ์ในแอพโดยอัตโนมัติ
คุณสามารถตั้งค่าแอพของคุณเพื่อใช้ Facebook SDK สำหรับ Android ได้ด้วยวิธีดังต่อไปนี้
หากต้องการรับ ID ของแอพ Facebook ให้กำหนดการตั้งค่าของแอพ แล้วนำเข้า Facebook SDK สำหรับ Android จากนั้นคลิกที่ปุ่มด้านล่างแล้วทำตามคำแนะนำ
การเริ่มต้นใช้งานอย่างง่ายสำหรับ Androidนับตั้งแต่เวอร์ชั่น 13.0.0 แต่ละแอพที่คุณสร้างขึ้นโดยใช้ Facebook SDK สำหรับ Android จะเพิ่มสิทธิ์การอนุญาตสำหรับ ID การลงโฆษณาให้กับแอพของคุณโดยอัตโนมัติ โปรดดูข้อมูลเพิ่มเติมที่ ID การลงโฆษณา - ความช่วยเหลือเกี่ยวกับ Play Console
ในบางกรณี คุณอาจต้องการเลือกที่จะไม่รวมสิทธิ์การอนุญาตสำหรับ ID การลงโฆษณาไว้ในแอพของคุณ ตัวอย่างเช่น หากลูกค้าสำหรับแอพของคุณเป็นเด็กและครอบครัว คุณอาจไม่จำเป็นต้องใช้สิทธิ์การอนุญาตสำหรับ ID การลงโฆษณา หากต้องการยกเว้นสิทธิ์การอนุญาตสำหรับ ID การลงโฆษณาจากแอพของคุณ ให้ปฏิบัติตามคำแนะนำที่ระบุไว้ในส่วนหลังของเอกสารประกอบนี้
หากต้องการใช้ Facebook SDK ในโปรเจ็กต์บน Android Studio ให้เพิ่ม SDK ดังกล่าวเป็นทรัพยากรที่ต้องใช้ในการสร้าง (Build Dependency) และนำเข้า SDK นั้น
ไปที่ Android Studio | New Project (โปรเจ็กต์ใหม่) | Minimum SDK (SDK ขั้นต่ำ)
เลือก API 15: Android 4.0.3 (IceCreamSandwich) หรือเวอร์ชั่นที่สูงกว่านั้น แล้วสร้างโปรเจ็กต์ใหม่ของคุณ
เปิดไฟล์ Gradle Scripts | build.gradle (Project: <your_project>)
แล้วเพิ่มโค้ดต่อไปนี้
mavenCentral()
บันทึกและปิดไฟล์ build.gradle (Project: <your_project>)
เปิดไฟล์ Gradle Scripts | build.gradle (Module: app)
แล้วเพิ่มโค้ดต่อไปนี้ลงในส่วน dependencies
implementation 'com.facebook.android:facebook-android-sdk:latest.release'
บันทึกและปิดไฟล์ build.gradle (Module: app)
สร้างโปรเจ็กต์ของคุณ ตอนนี้ คุณสามารถนำเข้า com.facebook.FacebookSdk
ลงในแอพของคุณได้แล้ว
เพิ่ม ID ของแอพและโทเค็นของไคลเอ็นต์ของคุณลงในไฟล์สตริงของโปรเจ็กต์ แล้วอัพเดตไฟล์ Manifest ให้ดำเนินการดังต่อไปนี้
เปิดไฟล์ /app/res/values/strings.xml
ในโปรเจ็กต์สำหรับแอพของคุณ
เพิ่มองค์ประกอบ string
ที่มีชื่อว่า facebook_app_id
และ facebook_client_token
แล้วตั้งค่าเป็น ID ของแอพและโทเค็นของไคลเอ็นต์ของคุณ ตัวอย่างเช่น หาก ID ของแอพเป็น 1234
และโทเค็นของไคลเอ็นต์ของคุณเป็น 56789
โค้ดของคุณจะมีลักษณะดังนี้
<string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
เปิดไฟล์ /app/manifests/AndroidManifest.xml
ในโปรเจ็กต์สำหรับแอพของคุณ
เพิ่มองค์ประกอบ meta-data
ให้กับองค์ประกอบ application
สำหรับ ID ของแอพและโทเค็นของไคลเอ็นต์ของคุณดังนี้
<application android:label="@string/app_name" ...>
...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
...
</application>
เพิ่มองค์ประกอบ uses-permission
ไปยังไฟล์ Manifest หลังจากองค์ประกอบ application
ดังนี้
<uses-permission android:name="android.permission.INTERNET"/>
(ทางเลือก) หากต้องการเลือกไม่ใช้สิทธิ์การอนุญาตสำหรับ ID การลงโฆษณา ให้เพิ่มองค์ประกอบ uses-permission
ลงในไฟล์ Manifest หลังจากองค์ประกอบ application
ดังนี้
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
สร้างโปรเจ็กต์ของคุณ
หากคุณแชร์ลิงก์ รูปภาพ หรือวิดีโอจากแอพ ให้ประกาศสิทธิ์ FacebookContentProvider
ในไฟล์ Manifest ให้ดำเนินการดังต่อไปนี้
เปิดไฟล์ /app/manifests/AndroidManifest.xml
ในโปรเจ็กต์สำหรับแอพของคุณ
เพิ่มองค์ประกอบ provider
ลงในไฟล์ Manifest สำหรับสิทธิ์ FacebookContentProvider
นำ ID ของแอพของคุณไปต่อท้ายค่า authorities
ตัวอย่างเช่น หาก ID ของแอพของคุณคือ 1234
การประกาศจะมีลักษณะดังนี้
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
สร้างโปรเจ็กต์ของคุณ
ตัวอย่างต่อไปนี้จะมาพร้อมกับ Facebook SDK สำหรับ Android
คุณสามารถทดลองกับตัวอย่างได้โดยนำเข้า Facebook SDK ไปยังโปรเจ็กต์ใน Android Studio ตัวอย่างจะมีทรัพยากรที่ต้องใช้ของโปรเจ็กต์ แทนที่จะเป็นทรัพยากรที่ต้องใช้ของที่เก็บส่วนกลางผ่าน Maven Central หรือ JCenter ทั้งนี้ก็เพื่อให้ตัวอย่างแสดงถึงการเปลี่ยนแปลงต่างๆ ที่เกิดขึ้นเมื่อสำเนา SDK ในเครื่องได้รับการอัพเดต
หากต้องการรันแอพตัวอย่างโดยเร็ว คุณสามารถสร้างแฮชคีย์สำหรับสภาพแวดล้อมการพัฒนาของคุณได้ ให้เพิ่มแฮชคีย์เหล่านี้ลงในโปรไฟล์ผู้พัฒนาของ Facebook ของคุณสำหรับแอพตัวอย่าง Keytool (ซึ่งมีไว้สำหรับสร้างแฮชคีย์) จะรวมอยู่กับ Java SE Development Kit (JDK) ที่คุณได้ติดตั้งไว้เป็นส่วนหนึ่งในการตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ OpenSSL เปิดให้ดาวน์โหลดได้จาก OpenSSL
บน OS X ให้รันโค้ดดังต่อไปนี้
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
บน Windows คุณจำเป็นต้องมีสิ่งต่อไปนี้
keytool
) จาก Java Development Kitรันคำสั่งต่อไปนี้ในพร้อมท์คำสั่งในโฟลเดอร์ Java SDK ซึ่งจะสร้างสตริงที่มีความยาว 28 อักขระขึ้นมา
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
ไปที่เว็บไซต์สำหรับผู้พัฒนาของ Facebook เข้าสู่ระบบ Facebook จากนั้นไปที่การตั้งค่าสำหรับผู้พัฒนาโดยใช้เมนูดร็อปดาวน์ทางด้านขวาบน
ในการตั้งค่าสำหรับผู้พัฒนา ให้เลือกแอพตัวอย่างจากเมนู แล้วเพิ่มและบันทึกแฮชคีย์ของคุณไว้ในโปรไฟล์
คุณสามารถเพิ่มแฮชคีย์ได้หลายรายการ หากคุณพัฒนาโดยใช้แมชชีนจำนวนหลายเครื่อง
ในตอนนี้ คุณสามารถคอมไพล์และรันตัวอย่างทั้งหมดได้แล้ว ซึ่งรวมถึงตัวอย่างที่ใช้การเข้าสู่ระบบด้วย Facebook
Facebook ใช้แฮชคีย์เพื่อยืนยันตัวตนในการโต้ตอบต่างๆ ระหว่างแอพของคุณกับแอพ Facebook หากคุณรันแอพที่ใช้การเข้าสู่ระบบด้วย Facebook คุณจำเป็นต้องเพิ่มแฮชคีย์สำหรับการพัฒนาของ Android ลงในโปรไฟล์ผู้พัฒนาของ Facebook ของคุณด้วย
สำหรับเวอร์ชั่นของแอพที่คุณจะเผยแพร่ออกไป คุณจำเป็นต้องสร้างและตั้งค่าแฮชคีย์สำหรับการเผยแพร่ด้วย
คุณสามารถรับแฮชคีย์ได้โดยสร้างแฮชคีย์ขึ้นมาหรือใช้ค่าที่ Settings.getApplicationSignature(Context)
ส่งคืนมาก็ได้ ไม่ว่าจะเป็น OS X หรือ Windows โปรดดูคำแนะนำที่การรันแอพตัวอย่าง
ในการยืนยันตัวตนสำหรับการแลกเปลี่ยนข้อมูลระหว่างแอพของคุณกับ Facebook คุณจำเป็นต้องสร้างแฮชคีย์สำหรับการเผยแพร่และเพิ่มแฮชคีย์นี้ลงในการตั้งค่า Android ภายใน ID ของแอพ Facebook ของคุณ หากไม่มีแฮชคีย์นี้ การผสานการทำงานกับ Facebook อาจทำงานไม่เหมาะสมเมื่อเผยแพร่แอพของคุณไปยังร้านค้า
คุณควรจะได้อัพเดตการตั้งค่าสำหรับผู้พัฒนาของ Facebook ไปแล้วในขั้นตอนก่อนหน้านี้ โดยใช้แฮชคีย์สำหรับสภาพแวดล้อมการพัฒนาของคุณ
เมื่อเผยแพร่แอพของคุณ แอพดังกล่าวมักได้รับการลงนามด้วยลายเซ็นที่แตกต่างกันตามสภาพแวดล้อมการพัฒนาของคุณ ดังนั้น คุณต้องตรวจสอบให้แน่ใจว่าคุณได้สร้างแฮชคีย์สำหรับการเผยแพร่และเพิ่มแฮชคีย์ดังกล่าวในการตั้งค่า Android สำหรับ ID ของแอพ Facebook
หากต้องการสร้างแฮชของคีย์สำหรับการเผยแพร่ ให้รันคำสั่งต่อไปนี้บน Mac หรือ Windows โดยแทนที่ชื่อแทนของคีย์สำหรับการเผยแพร่และพาธไปยังคีย์สโตร์ของคุณ
บน Mac OS ให้รันโค้ดดังต่อไปนี้
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
บน Windows คุณจำเป็นต้องมีสิ่งต่อไปนี้
keytool
) จาก Java Development Kitรันคำสั่งต่อไปนี้ในพร้อมท์คำสั่งในโฟลเดอร์ Java SDK
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
ตรวจสอบให้แน่ใจว่าได้ใช้รหัสผ่านที่คุณตั้งค่าไว้เมื่อสร้างคีย์สำหรับการเผยแพร่เป็นครั้งแรก
คำสั่งนี้ควรสร้างสตริงที่มีความยาว 28 อักขระขึ้นมา ให้คัดลอกและวางแฮชคีย์สำหรับการเผยแพร่นี้ลงในการตั้งค่า Android ของ ID ของแอพ Facebook
นอกจากนี้ คุณยังควรตรวจสอบว่า การตั้งค่า Android ของ ID ของแอพ Facebook มีชื่อแพ็คเกจที่ถูกต้องและคลาสกิจกรรมหลักสำหรับแพ็คเกจ Android ของคุณอีกด้วย
คุณสามารถประกาศทรัพยากรที่ต้องใช้ของ Maven ด้วย Facebook SDK สำหรับ Android เวอร์ชั่นล่าสุดที่มีให้ใช้งาน
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
หากคุณพบปัญหาในการรันแอพตัวอย่าง ปัญหาดังกล่าวอาจเกี่ยวข้องกับแฮชคีย์ คุณอาจพบสถานการณ์อย่างใดอย่างหนึ่งต่อไปนี้
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
ตรวจสอบแฮชคีย์ของคุณ และควรตรวจสอบให้มั่นใจว่าคุณใช้แฮชคีย์ที่ถูกต้อง I
นอกจากนี้ คุณยังสามารถปรับเปลี่ยนโค้ดตัวอย่างด้วยตนเองเพื่อให้ใช้แฮชคีย์ที่ถูกต้องได้อีกด้วย ตัวอย่างเช่น ในคลาส HelloFacebookSampleActivity
ให้ทำการเปลี่ยนแปลงชั่วคราวกับ onCreate()
ดังนี้
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } ...
บันทึกการเปลี่ยนแปลงและรันตัวอย่างอีกครั้ง ให้ตรวจสอบเอาต์พุตของ Logcat ที่คุณได้รับเพื่อหาข้อความที่คล้ายคลึงกันนี้
12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
บันทึกแฮชคีย์ในโปรไฟล์ผู้พัฒนาของคุณ รันตัวอย่างอีกครั้งและตรวจสอบยืนยันว่าคุณสามารถเข้าสู่ระบบได้สำเร็จ