เริ่มต้นใช้งาน SDK สำหรับ Android
Facebook SDK สำหรับ Android เป็นวิธีที่ง่ายที่สุดในการรวมแอพ Android ของคุณกับ Facebook ซึ่งจะช่วยให้คุณสามารถใช้งานสิ่งต่อไปนี้ได้
- การเข้าสู่ระบบด้วย Facebook - ทำให้ผู้ใช้ยืนยันตัวตนโดยใช้ข้อมูลการเข้าสู่ระบบด้วย Facebook ได้
- กล่องโต้ตอบการแชร์และส่งข้อมูล - ผู้ใช้สามารถแชร์เนื้อหาจากแอพของคุณไปยัง Facebook ได้
- เหตุการณ์ในแอพ - บันทึกเหตุการณ์ลงในแอพพลิเคชั่นของคุณ
- API กราฟ - อ่านและเขียนลงใน API กราฟ
คุณสามารถตั้งค่าแอพเพื่อใช้งาน Facebook SDK ได้ด้วยสองวิธีนี้
- โดยการใช้การเริ่มต้นด่วน
- โดยการตั้งค่าโปรเจ็กต์ของคุณด้วย Facebook SDK
การเริ่มต้นใช้งานอย่างง่าย
หากต้องการ ID แอพของ Facebook ให้กำหนดการตั้งค่าแอพของคุณ และส่งเข้า Facebook SDK จากนั้นคลิกที่ปุ่มด้านล่างและทำตามคำแนะนำออนไลน์
การเริ่มต้นใช้งานอย่างง่ายสำหรับ Android
คู่มือแนะนำที่เกี่ยวข้อง:
การตั้งค่า Android Studio
สำหรับการใช้ Facebook SDK ในโปรเจ็กต์ ให้เพิ่ม Facebook SDK เป็นสิ่งที่ต้องใช้ในการสร้างและทำการนำเข้า
1. ไปที่ Android Studio | New Project | Minimum SDK
2. เลือก API 15: Android 4.0.3 หรือสูงกว่าเพื่อสร้างโปรเจ็กต์ใหม่
3. หลังจากที่คุณสร้างโปรเจ็กต์ใหม่แล้ว ให้เปิด
your_app | build.gradle

4. เพิ่มไปยังระดับโมดูล /app/build.gradle ก่อนdependencies:
repositories {
mavenCentral()
}5. เพิ่มความเกี่่ยวข้องสัมพันธ์กันของคอมไพล์ด้วย Facebook SDK เวอร์ชั่นล่าสุดในไฟล์ build.gradle:
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.+'
}6. สร้างโปรเจ็กต์ของคุณ ขณะนี้คุณสามารถนำเข้า com.facebook.FacebookSdk ไปยังแอพของคุณได้แล้ว
คุณต้องกำหนดค่าตั้งต้น Facebook SDK ก่อนเริ่มต้นใช้งาน เพิ่มการโทรไปยัง FacebookSdk.sdkInitialize จากonCreate ในคลาสApplication ของคุณ:
// Add this to the header of your file:
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
public class MyApplication extends Application {
// Updated your class body:
@Override
public void onCreate() {
super.onCreate();
// Initialize the SDK before executing any other operations,
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
}เพิ่ม ID ของแอพ Facebook
จากนั้นใส่ ID ของแอพ Facebook ของคุณไปยังไฟล์สตริงของโครงการ แล้วอัพเดต Android Manifest ดังนี้
1. เปิดไฟล์ strings.xml พาธตัวอย่าง: /app/src/main/res/values/strings.xml
2. เพิ่มสตริงใหม่โดยใช้ชื่อ facebook_app_id และใส่ค่าเป็น ID ของแอพ Facebook
3. เปิด AndroidManifest.xml
4. เพิ่มองค์ประกอบ uses-permission ไปยัง Manifest:
<uses-permission android:name="android.permission.INTERNET"/>
5. เพิ่มองค์ประกอบ meta-data ไปยังองค์ประกอบ application:
<application android:label="@string/app_name" ...>
...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
...
</application>การส่งรูปภาพหรือวิดีโอ
หากแชร์ลิงก์ รูปภาพ หรือวิดีโอผ่านแอพ Facebook สำหรับ Android คุณจะต้องประกาศ FacebookContentProvider ใน Manifest ด้วย
ผนวก ID ของแอพไว้ในส่วนท้ายของค่า authorities ตัวอย่างเช่น หาก ID แอพ Facebook ของคุณคือ 1234 การประกาศจะมีลักษณะดังนี้
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />การใช้งาน SDK ด้วย ProGuard
คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมในการใช้งาน ProGuard สำหรับ Facebook SDK สำหรับ Android สำหรับคำแนะนำบน Proguard ให้ดูที่ไซต์โปรเจ็กต์เครื่องมือ Android ในส่วนการใช้งาน ProGuard
การใช้งานแอพตัวอย่าง
SDK จะมีตัวอย่างดังต่อไปนี้มาพร้อมด้วย
- HelloFacebookSample - แสดงการเข้าถึงโปรไฟล์ การอัพเดตสถานะ และการอัพโหลดรูปภาพ
- RPSSample - ใช้กล่องโต้ตอบการแชร์แบบเดิม, การเผยแพร่ Open Graph, ตัวเลือกการส่ง, คำเชิญ และการเชื่อมโยงตรง
- Scrumptious - การเข้าสู่ระบบ, การส่งคำขอ, ตัวคัดกรอง, การอัพโหลดรูปภาพ และการเผยแพร่ Open Graph
คุณสามารถทำการทดสอบกับตัวอย่างโดยนำเข้า 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 -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
โดยจะสร้างสตริงที่มีอักขระ 28 ตัว
ไปที่ ไซต์ผู้พัฒนาบน Facebook เข้าสู่ระบบ Facebook และใช้เมนูดร็อปดาวน์ด้านขวาบน ไปที่การตั้งค่านักพัฒนา:

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

คุณสามารถป้อนแฮชคีย์มากกว่าหนึ่งคีย์ได้ หากคุณทำการพัฒนาโดยใช้อุปกรณ์มากกว่าหนึ่งชิ้น
เวลานี้คุณสามารถแปลรหัสและรันตัวอย่างทั้งหมด รวมถึงตัวอย่างที่ใช้การเข้าสู่ระบบ Facebook ด้วย
สร้างแฮชคีย์สำหรับการพัฒนา (Development Key Hash)
Facebook ใช้แฮชคีย์สำหรับการยืนยันการโต้ตอบระหว่างแอพของคุณและแอพ Facebook หากคุณรันแอพที่ใช้เข้าสู่ระบบ Facebook คุณต้องเพิ่มแฮชคีย์สำหรับการพัฒนา Android ไปยังโปรไฟล์ผู้พัฒนาบน Facebook ของคุณด้วย
สำหรับแอพเวอร์ชันที่มีการเผยแพร่หรือเปิดให้ใช้งาน คุณจะต้อง สร้างและตั้งค่าแฮชคีย์สำหรับการเผยแพร่ ด้วย
ไม่ว่าจะเป็นระบบปฏิบัติการ OS X หรือ Windows คุณก็สามารถหาแฮชคีย์ได้โดยสร้างหรือโดยใช้ค่าที่ได้รับมาจาก Settings.getApplicationSignature(Context) สำหรับคำแนะนำการใช้งาน โปรดดูที่ การรันแอพตัวอย่าง
ขั้นตอนถัดไป
หลังจากที่คุณได้ติดตั้ง Facebook SDK สำหรับ Android และทำการตั้งค่า ID ของแอพบน Facebook แล้ว คุณจะเห็น:
การตั้งค่าแฮชคีย์สำหรับการเผยแพร่
คุณต้องสร้างแฮชคีย์สำหรับการเผยแพร่และเพิ่มแฮชคีย์ดังกล่าวไปยังการตั้งค่า Android ภายใน ID ของแอพบน Facebook ของคุณ เพื่อเป็นการยืนยันการแลกเปลี่ยนข้อมูลระหว่างแอพของคุณและ Facebook หากไม่มีแฮชคีย์ดังกล่าว การผสานการทำงานรวมกับ Facebook ของคุณอาจไม่สามารถทำงานได้ตามปกติเมื่อคุณทำการเผยแพร่แอพในร้านค้า
ในขั้นตอนก่อนหน้า คุณควรทำการอัพเดต การตั้งค่าผู้พัฒนาบน Facebook โดยใช้แฮชคีย์สำหรับสภาพแวดล้อมในการพัฒนาของคุณ
เมื่อคุณเผยแพร่แอพ โดยปกติแล้วแอพมักจะใช้ซิกเนเจอร์ (Signature) ที่แตกต่างจากสภาพแวดล้อมในการพัฒนาของคุณ ดังนั้นคุณควรตรวจสอบให้แน่ใจว่าคุณได้สร้างแฮชคีย์สำหรับการเผยแพร่ และเพิ่มแฮชคีย์ดังกล่าวไปยังการตั้งค่า Android สำหรับ ID ของแอพบน Facebook
สำหรับการสร้างแฮชของคีย์สำหรับการเผยแพร่ ให้รันคำสั่งดังต่อไปนี้บน Mac หรือ Windows แทนนามแฝงของคีย์สำหรับการเผยแพร่และพาธไปยังคีย์สโตร์ของคุณ บนระบบปฏิบัติการ OS X ให้รัน:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
บนระบบปฏิบัติการ Windows ให้ใช้:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
ตรวจสอบให้แน่ใจว่าคุณใช้รหัสผ่านที่คุณตั้งค่าไว้ในครั้งแรกที่คุณสร้างคีย์สำหรับการเผยแพร่
คำสั่งนี้จะสร้างสตริงความยาว 28 อักขระ คัดลอกและวางแฮชคีย์สำหรับการเผยแพร่นี้ลงไปในการตั้งค่า Android ของ ID ของแอพบน Facebook

นอกจากนี้ คุณควรตรวจสอบด้วยว่าการตั้งค่า Android ของ ID ของแอพบน Facebook นี้มีชื่อแพ็คเกจที่ถูกต้องและคลาสกิจกรรมหลักที่ถูกต้องสำหรับแพ็คเกจ Android ของคุณ
การใช้งาน Facebook SDK ด้วย Maven
คุณสามารถแสดงความเกี่่ยวข้องสัมพันธ์กับ Maven ด้วยเวอร์ชันล่าสุดของ SDK สำหรับ Android:
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
การแก้ไขปัญหาสำหรับแอพตัวอย่าง
หากคุณประสบปัญหาในรันแอพตัวอย่าง ปัญหาที่เกิดอาจเกี่ยวข้องกับแฮชคีย์ คุณอาจพบปัญหาแบบใดแบบหนึ่งดังต่อไปนี้
- ข้อความโต้ตอบเพื่อเข้าสู่ระบบรูปแบบเดิมปรากฏขึ้น แต่หลังจากที่ยอมรับสิทธิ์แล้ว คุณยังคงอยู่ในสถานะออกจากระบบ นอกจากนี้ Logcat ยังมีข้อยกเว้นดังนี้
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
- ข้อความโต้ตอบเพื่อเข้าสู่ระบบที่ไม่ใช่รูปแบบดั้งเดิมจะปรากฏพร้อมข้อความแสดงข้อผิดพลาด: ''..App กำหนดค่าไม่ถูกต้องสำหรับการเข้าสู่ระบบ Facebook...''
ตรวจสอบแฮชคีย์ของคุณและตรวจสอบว่าคุณใช้แฮชคีย์ที่ถูกต้อง 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=
บันทึกแฮชคีย์ไว้ใน โปรไฟล์ผู้พัฒนา ของคุณ รันตัวอย่างอีกครั้งและตรวจสอบว่าคุณสามารถเข้าสู่ระบบได้ตามปกติ