Bắt đầu với SDK Android

SDK Facebook dành cho Android là cách dễ nhất để tích hợp ứng dụng Android với Facebook. Cách này cho phép:

Bạn có hai cách thiết lập ứng dụng để sử dụng SDK Facebook:

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

Bắt đầu nhanh

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

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

 

Hướng dẫn có liên quan:

Thiết lập Android Studio

Để sử dụng SDK Facebook trong một dự án, hãy thêm SDK dưới dạng phần phụ thuộc bản dựng và nhập SDK.

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

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

3. Sau khi tạo dự án mới, hãy mở your_app | build.gradle

4. Thêm lớp trung gian sau vào phần buildscript { repositories {}} của tệp build.gradle (Project):

mavenCentral() 

5. Thêm lớp trung gian sau vào phần dependencies {} của tệp build.gradle (module: app) để tổng hợp phiên bản mới nhất của SDK Facebook:

Cần xóa đối tượng này. Hãy liên hệ với Arsenio Locsin để biết thêm thông tin.

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

6. Xây dựng dự án của bạn. Giờ bạn có thể nhập com.facebook.FacebookSdk vào ứng dụng.

Thêm ID ứng dụng Facebook

Sau đó, thêm ID ứng dụng Facebook vào tệp chuỗi của dự án và cập nhật tệp kê khai Android:

1. Mở tệp strings.xml. Đường dẫn mẫu: /app/src/main/res/values/strings.xml.

2. Thêm chuỗi mới với tên facebook_app_id và giá trị như ID ứng dụng Facebook của bạn

3. Mở AndroidManifest.xml

4. Thêm thành phần uses-permission vào tệp kê khai:

<uses-permission android:name="android.permission.INTERNET"/>

5. Thêm thành phần meta-data vào thành phần application:

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

Gửi hình ảnh hoặc video

Nếu bạn đang chia sẻ liên kết, hình ảnh hoặc video qua ứng dụng Facebook dành cho Android, bạn cũng phải khai báo FacebookContentProvider trong tệp kê khai.

Thêm id ứng dụng vào cuối giá trị authorities. Chẳng hạn, nếu id ứng dụng Facebook là 1234 thì phần khai báo phải có dạng như sau:

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

Sử dụng SDK với ProGuard

Bạn không phải thực hiện thêm bất kỳ bước nào để sử dụng ProGuard cho SDK Facebook dành cho Android. Để được hướng dẫn về Proguard, hãy xem Trang web dành cho nhà phát triển Android, Rút gọn mã và tài nguyên.

Chạy ứng dụng mẫu

Các mẫu sau đi kèm với SDK:

  • HelloFacebookSample - Hiển thị quyền truy cập trang cá nhân, cập nhật trạng thái và ảnh tải lên
  • RPSSample - Sử dụng hộp thoại Chia sẻ gốc, đăng lên Open Graph, bộ chọn, lời mời và liên kết sâu.
  • Scrumptious - Đăng nhập, yêu cầu, bộ chọn, tải ảnh lên và đăng lên Open Graph.

Bạn có thể thử nghiệm các mẫu bằng cách nhập 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 các ứ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 Facebook cho các ứng dụng mẫu. Keytool, dùng để tạo hash khóa, đi kèm với Bộ 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, chạy:

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

Trên Windows, chạy:

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

Tùy chọn này tạo ra một chuỗi gồm 28 ký tự.

Truy cập trang web dành cho nhà phát triển Facebook. Đăng nhập Facebook và sử dụng menu thả xuống ở trên cùng bên phải, đi tới 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ạn hiệ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 Đăng nhập Facebook.

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

Facebook sử dụng hash khóa để xác thực tương tác giữa ứng dụng của bạn và ứng dụng Facebook. Nếu bạn chạy các ứng dụng sử dụng Đăng nhập 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 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ể nhận 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 .


Các bước tiếp theo

Sau khi cài đặt SDK Facebook dành cho Android và cấu hình ID ứng dụng Facebook, bạn có thể xem:


Đặt hash khóa phát hành

Để xác thực 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, tích hợp Facebook có thể không hoạt độ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, lẽ ra bạn phải cập nhật Cài đặt nhà phát triể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 cho môi trường phát triển của bạn. Vì vậy, bạn phải đảm bảo tạo hash khóa phát hành và thêm hash này vào 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 Mac hoặc Windows để thay thế bí danh khóa phát hành và đường dẫn đến cửa hàng khóa. Trên OS X, chạy:

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

Trên Windows, sử dụng:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | 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 phải 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 cài đặt Android của ID ứng dụng Facebook.

Bạn cũng nên kiểm tra để đảm bảo 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 SDK Facebook 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 SDK 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ì có thể sự cố này có liên quan đến hash khóa. Bạn có thể gặp một trong các trường hợp 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 với thông báo lỗi: ''..App is Misconfigured for facebook login...'' (Ứng dụng bị cấu hình sai cho đăng nhập facebook).

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. Chẳng hạn như trong lớp HelloFacebookSampleActivity, hãy thực hiện thay đổi tạm thời cho 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 thay đổi và chạy lại mẫu. Kiểm tra đầu ra logcat để tìm thông báo tương tự như thông báo này:

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

Lưu hash khóa trong trang cá nhân dành cho 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.