Facebook Login cung cấp một cách thuận tiện và an toàn cho phép người sử dụng đăng nhập vào một ứng dụng mà không cần phải đăng ký lại. Sử dụng phiên bản mới nhất của Facebook SDK cho Android để thêm tính năng này để ứng dụng của bạn một cách nhanh chóng.

Trong bài hướng dẫn này, bạn sẽ tìm hiểu làm thế nào để thêm nút đăng nhập của Facebook vào một ứng dụng Android và xử lý các sự kiện đăng nhập của người dùng.

Yêu cầu

Các bước thực hiện

Bước 1: Đăng ký ứng dụng

Tất cả các ứng dụng mà sử dụng Facebook SDK phải được đăng ký với Facebook. Đăng nhập vào trang Facebook Developers website  và nhấn Add a New App ở góc trên bên phải.

tích hợp login của facebook trong ứng dụng android

Chọn nền tảng Android

tích hợp login của facebook trong ứng dụng android

Chọn Skip and Create App ID

tích hợp login của facebook trong ứng dụng android

Nhập thông tin cho Tên hiển thị và lựa chọn danh mục, sau đó chọn Tạo ID ứng dụng

tích hợp login của facebook trong ứng dụng android

Hoàn tất kiểm tra bảo mật vào chọn nút Gửi

tích hợp login của facebook trong ứng dụng android

Chọn Choose a Platform

tích hợp login của facebook trong ứng dụng android

Chọn Android

tích hợp login của facebook trong ứng dụng android

Thêm Facebook SDK vào Project

  • Để sử dụng Facebook SDK trong một project, chúng ta phải thêm trong phần dependency và import com.facebook.FacebookSdk. Các bước thực hiện như sau: (Lưu ý nếu thêm Facebook SDK vào Project đã tồn tại thì chỉ thực hiện từ 2 – 3)

1. Tại Android Studio -> New Project, Minimum SDK chọn “API 15: Android 4.0.3” hoặc cao hơn và tạo một project mới. Sau khi bạn tạo xong project, mở tập tin build.gradle (Module:app)

2. Bổ sung dòng này vào build.gradle (Module:app) trước dependencies:
repositories { mavenCentral() }

3. Import com.facebook.FacebookSdk vào ứng dụng bằng cách bổ sung đoạn lệnh này vào phần dependencies của build.gradle (Module:app):
compile ‘com.facebook.android:facebook-android-sdk:4.6.0’

  • Rebuild project (Trong Android Studio -> Chọn Build -> Chọn Rebuild Project)

Đăng ký dpackage và Activity

  • Bước 1: Xem Package Name khai báo trong AndroidManifest.xml

tích hợp login của facebook trong ứng dụng android

  • Bước 2: Tạo mới Activity trong Android Studio
  • Bước 3: Nhập Package NameDefault Activity Class Name, sau đó chọn Next

tích hợp login của facebook trong ứng dụng android Bước 2: Sinh mã Key Hash tại Activity

  • Sử dụng đoạn mã sau để sinh mã Key Hash, lưu ý thay đổi đoạn in đậm theo package của ứng dụng đã khai báo trong AndroidManifest.xml

try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(“android.androidpractice“, PackageManager.GET_SIGNATURES);
for(Signature signature: packageInfo.signatures){
MessageDigest messageDigest = MessageDigest.getInstance(“SHA”);
messageDigest.update(signature.toByteArray());
Log.d(“KeyHash:”, Base64.encodeToString(messageDigest.digest(),Base64.DEFAULT));
}
}catch (Exception e){
}

  • Nhập Key Hash tại Development Key Hashes tại trang web , sau đó chọn Next

tích hợp login của facebook trong ứng dụng androidBước 3: Viết xử lý cho Activity

  • Khai báo các đối tượng

private LoginButton loginButton;
private CallbackManager callbackManager;

  • Viết xử lý cho phương thức onCreate

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

setContentView(R.layout.activity_main);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(MainActivity.this,”Successful”, Toast.LENGTH_LONG).show();
}

@Override
public void onCancel() {
Toast.makeText(MainActivity.this,”Login attempt canceled.”, Toast.LENGTH_LONG).show();
}

@Override
public void onError(FacebookException e) {
Toast.makeText(MainActivity.this,”Login attempt failed.”, Toast.LENGTH_LONG).show();
}
});

  • Giải thích
    • Nếu đăng nhập thành công thì phương thức onSuccess được gọi
    • Nếu người sử dụng huỷ đăng nhập thì phương thức onCancel được gọi
    • Nếu quá trình đăng nhập phát sinh lỗi thì phương thức onError được gọi
  • Khi người dùng chạm vào nút đăng nhập thì sẽ bắt đầu một Activity mới, trong đó trả về một kết quả. Để tiếp nhận và xử lý kết quả, chúng ta phải thực hiện override phương thức onActivityResult của CallbackManager
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

Thêm Facebook Application ID

  • Facebook Application ID chúng ta đã nhận trong quá trình đăng ký app. Thực hiện bổ sung đoạn mã sau tại res/values/strings.xml
  • Lưu ý thay đổi đoạn in đậm bằng App ID của ứng dụng bạn

tích hợp login của facebook trong ứng dụng android

<string name=”app_id”>435435223321960</string>

Thay đổi AndroidManifest

  • Bổ sung các đoạn mã sau
<uses-permission android:name="android.permission.INTERNET" />
<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/app_id"/>

<activity android:name="com.facebook.FacebookActivity"
    android:configChanges=
        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:label="@string/app_name" />

Build và thực thi ứng dụng

  • Chạm vào icon AndroidPratice (AndroidPractice là tên ứng dụng)

tích hợp login của facebook trong ứng dụng android

  • Màn hình ứng dụng

tích hợp login của facebook trong ứng dụng android

  • Chạm “Log in with Facebook”

tích hợp login của facebook trong ứng dụng android

Các bạn đã hoàn thành xong bài hướng dẫn tích hợp login của facebook trong ứng dụng android

Chia sẻ