เริ่มต้นใช้งาน SDK สำหรับ Android

Facebook SDK สำหรับ Android เป็นวิธีที่ง่ายที่สุดในการผสานระบบแอพ Android ของคุณกับ Facebook เครื่องมือนี้มีประโยชน์ดังนี้

คุณสามารถตั้งค่าแอพเพื่อใช้งาน 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. เพิ่มสิ่งต่อไปนี้ลงในส่วน buildscript { repositories {}} ของไฟล์ build.gradle (Project):

mavenCentral() 

5. เพิ่มสิ่งต่อไปนี้ลงในส่วน dependencies {} ของไฟล์ build.gradle (module: app) ของคุณเพื่อรวบรวม Facebook SDK เวอร์ชั่นล่าสุด:

implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

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

6. สร้างโปรเจ็กต์ของคุณ ขณะนี้คุณสามารถนำเข้า com.facebook.FacebookSdk ไปยังแอพของคุณได้แล้ว

เพิ่ม 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, การย่อโค้ดและทรัพยากรของคุณ

การใช้งานแอพตัวอย่าง

ตัวอย่างต่อไปนี้จะมาพร้อมกับ 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 คุณจำเป็นต้องมีสิ่งเหล่านี้:

เรียกใช้คำสั่งต่อไปนี้ใน Command Prompt ในแฟ้ม Java SDK:

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 โดยใช้แฮชคีย์สำหรับสภาพแวดล้อมในการพัฒนาของคุณ

เมื่อคุณเผยแพร่แอพ โดยปกติแล้วแอพมักจะใช้ลายเซ็นที่ต่างกันจากสภาพแวดล้อมในการพัฒนาของคุณ ดังนั้นคุณควรตรวจสอบให้แน่ใจว่าคุณได้สร้างแฮชคีย์สำหรับการเผยแพร่ และเพิ่มแฮชคีย์ดังกล่าวไปยังการตั้งค่า Android สำหรับ ID ของแอพบน Facebook

สำหรับการสร้างแฮชของคีย์สำหรับการเผยแพร่ ให้เรียกใช้คำสั่งต่อไปนี้บนระบบปฏิบัติการ Mac หรือ Windows แทนนามแฝงของคีย์สำหรับการเผยแพร่และพาธไปยังคีย์สโตร์ของคุณ

บนระบบปฏิบัติการ Mac ให้เรียกใช้:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

บนระบบปฏิบัติการ Windows คุณจำเป็นต้องมีสิ่งเหล่านี้:

เรียกใช้คำสั่งต่อไปนี้ใน Command Prompt ในแฟ้ม 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 ของคุณ


การใช้งาน 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
  • ข้อความโต้ตอบเพื่อเข้าสู่ระบบแบบไม่ใช่เนทีฟปรากฏขึ้นพร้อมข้อผิดพลาดนี้: ''..แอพกำหนดค่าไม่ถูกต้องสำหรับการเข้าสู่ระบบด้วย 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=

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