Bắt đầu sử dụng Facebook SDK dành cho Android

Tài liệu này giải thích cách bắt đầu tích hợp ứng dụng Android của bạn với Facebook thông qua Facebook SDK dành cho Android. Phiên bản hiện tại của Facebook SDK dành cho Android là phiên bản 12.0.0 và yêu cầu API Android phiên bản 15. Để biết thêm thông tin về các phiên bản và tính năng, hãy xem phần Facebook SDK dành cho Android.

Khi bạn sử dụng Facebook SDK, một số sự kiện trong ứng dụng của bạn sẽ tự động được ghi lại và thu thập trừ khi bạn tắt tính năng ghi sự kiện tự động. Để biết chi tiết về loại thông tin được thu thập và cách tắt tính năng ghi sự kiện tự động, hãy xem phần Tự động ghi sự kiện trong ứng dụng.

Bạn có thể thiết lập ứng dụng nhằm sử dụng Facebook SDK dành cho Android theo những cách sau:

  • Bằng cách sử dụng hướng dẫn Bắt đầu nhanh.
  • Bằng cách thiết lập dự án của bạn với Facebook SDK dành cho Android.

Bắt đầu nhanh

Để lấy ID ứng dụng Facebook, hãy đặt cấu hình cài đặt cho ứng dụng của bạn và nhập Facebook SDK dành cho Android, nhấp vào nút bên dưới rồi làm theo hướng dẫn.

Bắt đầu nhanh dành cho Android

Tìm hiểu về Quyền đối với ID quảng cáo

Kể từ phiên bản 13.0.0, mỗi ứng dụng bạn tạo thông qua Facebook SDK dành cho Android sẽ tự động thêm Quyền đối với ID quảng cáo vào ứng dụng của bạn. Để biết thêm thông tin, hãy xem phần ID quảng cáo - Trợ giúp Play Console.

Trong một số trường hợp, bạn nên chọn không thêm quyền đối với ID quảng cáo vào ứng dụng của mình. Ví dụ: nếu khách hàng của ứng dụng là trẻ em và gia đình, Quyền đối với ID quảng cáo có thể không phù hợp. Hãy làm theo hướng dẫn ở phần sau của tài liệu này để loại trừ Quyền đối với ID quảng cáo khỏi ứng dụng của bạn.

Thiết lập Android Studio

Tạo dự án

Để sử dụng Facebook SDK trong một dự án Android Studio, hãy thêm SDK làm phần phụ thuộc của bản dựng rồi nhập SDK.

  1. Đi đến Android Studio | Dự án mới | SDK tối thiểu.

  2. Chọn API 15: Android 4.0.3 (IceCreamSandwich) trở lên và tạo dự án mới.

  3. Mở file Gradle Scripts | build.gradle (Project: <your_project>) và thêm các phần sau:

    mavenCentral()
    
  4. Lưu và đóng file build.gradle (Project: <your_project>).

  5. Mở file Gradle Scripts | build.gradle (Module: app) và thêm các mục sau vào phần dependencies:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. Lưu và đóng file build.gradle (Module: app).

  7. Xây dựng dự án của bạn. Bây giờ, bạn có thể nhập com.facebook.FacebookSdk vào ứng dụng của mình.

Cập nhật file kê khai

Thêm ID ứng dụngMã ứng dụng của bạn vào file chuỗi của dự án và cập nhật file kê khai. Thực hiện như sau:

  1. Mở file /app/res/values/strings.xml trong dự án ứng dụng.

  2. Thêm các thành phần string có tên là facebook_app_idfacebook_client_token, sau đó đặt những giá trị này thành ID ứng dụngMã ứng dụng của bạn. Ví dụ: nếu bạn có ID ứng dụng là 1234 và mã ứng dụng là 56789 thì mã của bạn sẽ có dạng như sau:

    <string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
  3. Mở file /app/manifests/AndroidManifest.xml trong dự án ứng dụng.

  4. Thêm các thành phần meta-data vào thành phần application cho ID ứng dụng và mã ứng dụng của bạn:

    <application android:label="&#064;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>
  5. Thêm thành phần uses-permission vào file kê khai sau thành phần application:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (Không bắt buộc) Để chọn không cấp Quyền đối với ID quảng cáo, hãy thêm thành phần uses-permission vào file kê khai sau thành phần application:

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. Xây dựng dự án của bạn.

Bật tính năng chia sẻ

Nếu bạn chia sẻ liên kết, hình ảnh hoặc video từ ứng dụng của mình, hãy khai báo quyền FacebookContentProvider trong file kê khai. Thực hiện như sau:

  1. Mở file /app/manifests/AndroidManifest.xml trong dự án ứng dụng.

  2. Thêm thành phần provider vào file kê khai dành cho quyền FacebookContentProvider. Thêm ID ứng dụng vào cuối giá trị authorities. Ví dụ: nếu ID ứng dụng của bạn là 1234, nội dung khai báo sẽ có dạng như sau:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. Xây dựng dự án của bạn.

Chạy ứng dụng mẫu

Dưới đây là các mẫu đi kèm với Facebook SDK dành cho Android:

  • HelloFacebookSample - Hiển thị quyền truy cập trang cá nhân, cập nhật trạng thái và tải ảnh lên.

Bạn có thể thử nghiệm các mẫu bằng cách nhập Facebook SDK vào dự án Android Studio. Các mẫu có phần phụ thuộc dự án thay vì phần phụ thuộc kho trung tâm qua trung tâm maven hoặc jcenter. Nhờ vậy, khi bản sao cục bộ của SDK được cập nhật, các mẫu sẽ phản ánh thay đổi.

Để chạy ứng dụng mẫu nhanh chóng, bạn có thể tạo hash khóa cho môi trường phát triển của mình. Thêm các hash này vào trang cá nhân dành cho nhà phát triển trên Facebook cho các ứng dụng mẫu. Keytool - dùng để tạo hash khóa - đi kèm với Bộ công cụ phát triển SE Java (JDK) mà bạn đã cài đặt trong quá trình thiết lập môi trường phát triển của mình. Bạn hiện có thể tải xuống OpenSSL từ OpenSSL.

Trên OS X, hãy chạy:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Trên Windows, bạn cần có:

Chạy lệnh sau trong lời nhắc lệnh tại thư mục Java SDK. Thao tác này tạo ra một chuỗi gồm 28 ký tự.

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

Truy cập trang web dành cho Nhà phát triển trên Facebook. Đăng nhập Facebook và sử dụng menu thả xuống ở trên cùng bên phải, chuyển đến phần Cài đặt dành cho nhà phát triển:

Trong cài đặt dành cho nhà phát triển, hãy chọn Ứng dụng mẫu từ menu, thêm và lưu hash khóa vào trang cá nhân của bạn:

Bạn có thể thêm nhiều hash khóa nếu phát triển bằng nhiều máy.

Bây giờ, bạn có thể biên soạn và chạy tất cả các mẫu – bao gồm cả những mẫu sử dụng phương thức Đăng nhập bằng Facebook.

Tạo hash khóa phát triển

Facebook sử dụng hash khóa để xác thực hoạt động tương tác giữa ứng dụng của bạn và ứng dụng Facebook. Nếu chạy các ứng dụng sử dụng phương thức Đăng nhập bằng Facebook, bạn cần thêm hash khóa phát triển Android vào trang cá nhân dành cho nhà phát triển trên Facebook.

Đối với phiên bản ứng dụng mà bạn phát hành, bạn cũng cần tạo và đặt Hash khóa phát hành.

Trên OS X hoặc Windows, bạn có thể lấy hash khóa bằng cách tạo hash hay sử dụng giá trị do Settings.getApplicationSignature(Context) trả về. Để được hướng dẫn, hãy xem phần Chạy ứng dụng mẫu .

Tạo hash khóa phát hành

Để xác thực hoạt động trao đổi thông tin giữa ứng dụng của bạn và Facebook, bạn cần tạo hash khóa phát hành và thêm hash này vào cài đặt Android trong ID ứng dụng Facebook. Nếu không có hash này, tiện ích tích hợp Facebook có thể hoạt động không bình thường khi bạn phát hành ứng dụng lên cửa hàng.

Trong bước trước, có lẽ bạn đã cập nhật Cài đặt dành cho nhà phát triển trên Facebook với hash khóa cho môi trường phát triển của mình.

Khi phát hành ứng dụng, ứng dụng thường được ký bằng một chữ ký khác với môi trường phát triển của bạn. Vì vậy, bạn cần đảm bảo tạo Hash khóa phát hành và thêm hash này vào phần cài đặt Android cho ID ứng dụng Facebook.

Để tạo hash khóa phát hành, hãy chạy lệnh sau trên máy Mac hoặc Windows để thay thế bí danh khóa phát hành và đường dẫn đến kho khóa của bạn.

Trên Mac OS, hãy chạy:

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

Trên Windows, bạn cần có:

Chạy lệnh sau trong lời nhắc lệnh tại thư mục 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

Đảm bảo sử dụng mật khẩu bạn đặt khi tạo khóa phát hành lần đầu tiên.

Lệnh này sẽ tạo ra một chuỗi gồm 28 ký tự. Sao chép và dán Hash khóa phát hành này vào phần cài đặt Android của ID ứng dụng Facebook.

Bạn cũng nên kiểm tra để đảm bảo phần cài đặt Android của ID ứng dụng Facebook cũng chứa tên gói chính xác và lớp hoạt động chính cho gói Android.

Sử dụng Facebook SDK dành cho Android với Maven

Bạn có thể khai báo phần phụ thuộc Maven với phiên bản mới nhất của Facebook SDK dành cho Android.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

Khắc phục sự cố ứng dụng mẫu

Nếu bạn gặp sự cố khi chạy ứng dụng mẫu thì sự cố này có thể liên quan đến hash khóa. Bạn có thể gặp một trong các tình huống sau:

  • Hộp thoại Đăng nhập gốc xuất hiện nhưng sau khi chấp nhận quyền, bạn vẫn ở trạng thái đăng xuất. Logcat cũng chứa trường hợp ngoại lệ:
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
  • Hộp thoại Đăng nhập không nguyên gốc xuất hiện kèm thông báo lỗi: ''..Ứng dụng bị đặt cấu hình sai cho phương thức đăng nhập bằng Facebook...''.

Hãy kiểm tra hash khóa và đảm bảo sử dụng đúng hash khóa. I

Bạn cũng có thể sửa đổi mã mẫu theo cách thủ công để sử dụng đúng hash khóa. Ví dụ: trong lớp HelloFacebookSampleActivity, hãy tạm thời thay đổi 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) {
        
    }
    
    ...

Lưu nội dung thay đổi rồi chạy lại mẫu. Hãy kiểm tra đầu ra logcat xem có thông báo tương tự như thông báo sau hay không:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

Lưu hash khóa trong trang cá nhân nhà phát triển. Chạy lại mẫu và xác minh rằng bạn có thể đăng nhập thành công.