Advertisement
  1. Code
  2. Android SDK

Chứng thực phi mật khẩu với Account Kit

Scroll to top
Read Time: 8 min

() translation by (you can also view the original English article)

Giới thiệu Account Kit

Xác thực phi mật khẩu là gì?

Xác thực phi mật khẩu là bỏ qua việc sử dụng một mật khẩu để đăng ký hoặc đăng nhập. Thay vào đó, người dùng xác thực được xác nhận hoặc với mã xác minh tin nhắn SMS một lần gửi đến điện thoại của người dùng hoặc liên kết một lần đến địa chỉ email của họ.

Tại sao sử dụng xác thực phi mật khẩu?

  • Đơn giản hoá quá trình đăng nhập và đăng ký cho người dùng của bạn.
  • Giữ quyền truy cập vào ứng dụng của bạn an toàn, bởi vì người dùng sẽ không sử dụng lại mật khẩu hoặc mật khẩu dễ đoán (chẳng hạn như "password").
  • Tránh rắc rối cho người dùng của bạn với sự cần thiết phải tạo ra và ghi nhớ những mật khẩu duy nhất

Trong hướng dẫn nhanh này, tôi sẽ chỉ cho bạn cách làm thế nào để sử dụng Account Kit của Facebook cho việc xác thực phi mật khẩu trong ứng dụng Android của bạn. Người dùng của bạn sẽ đăng ký và đăng nhập với địa chỉ email hoặc số điện thoại của họ. Người dùng không cần phải có một tài khoản Facebook để được xác thực.

Không những vậy, Account Kit còn dễ cài đặt và giúp bạn tiết kiệm việc phải xây dựng một hệ thống đăng nhập.

Facebook Account Kit homepage screenshotFacebook Account Kit homepage screenshotFacebook Account Kit homepage screenshot

Account Kit hoạt động như thế nào?

Sơ đồ dưới đây sẽ làm rõ cách thức hoạt động của Account Kit.

How Facebook Account Kit works How Facebook Account Kit works How Facebook Account Kit works

Việc xác thực diễn ra trong một loạt các trao đổi giữa người dùng và ứng dụng. Trước tiên người dùng khởi tạo việc đăng nhập, có thể bằng cách tải ứng dụng trên điện thoại của họ. Sau đó, một mã xác nhận được gởi tới người dùng thông qua tin nhắn SMS, hoặc một liên kết một lần sẽ được gửi qua email. Sau đó, nếu người dùng nhập vào mã xác nhận hoặc nhấp vào liên kết, họ sẽ được xác thực cho ứng dụng.

Một tính năng tuyệt vời của Facebook Account Kit là khi người dùng nhập số điện thoại vào ứng dụng, thì Account Kit sẽ cố gắng kết hợp nó với số điện thoại được kết nối với hồ sơ của người dùng Facebook. Nếu người dùng đã đăng nhập vào ứng dụng Facebook, và số điện thoại trùng khớp, thì Account Kit sẽ bỏ qua việc gửi mã xác nhận qua tin nhắn SMS và người dùng sẽ được đăng nhập một cách trơn tru.

Sử dụng Account Kit

1. Yêu cầu

Để bắt đầu sử dụng Account Kit, bạn sẽ cần:

2. Kích hoạt Account Kit

Đi đến bảng điều khiển ứng dụng của bạn, nhấp vào nút Add Product và chọn Account Kit. Sau đó nhấp vào nút Get Started để thêm Account Kit. Những gì bạn sẽ thấy là các cấu hình cài đặt cho Account Kit.

Account Kit settings Account Kit settings Account Kit settings

3. Định nghĩa các phụ thuộc

Thêm phụ thuộc với phiên bản mới nhất của Account Kit SDK trong tập tin build.gradle của bạn và đồng bộ dự án của bạn.

1
repositories {
2
  jcenter()
3
}
4
5
dependencies {
6
  compile 'com.facebook.android:account-kit-sdk:4.+'
7
}

4. Cập nhật AndroidManifest.xml

Thêm ID ứng dụng Facebook của bạn, Account Kit client token (nó có sẵn trên bảng điều khiển cài đặt Account Kit), và thêm quyền INTERNET vào AndroidManifest.xml.

1
<uses-permission android:name="android.permission.INTERNET" />
1
<meta-data android:name="com.facebook.accountkit.ApplicationName"
2
           android:value="@string/app_name" />
3
<meta-data android:name="com.facebook.sdk.ApplicationId"
4
           android:value="@string/FACEBOOK_APP_ID" />
5
<meta-data android:name="com.facebook.accountkit.ClientToken"
6
           android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />
7
8
<activity
9
  android:name="com.facebook.accountkit.ui.AccountKitActivity"
10
  android:theme="@style/AppLoginTheme"
11
  tools:replace="android:theme"/>

5. Cập nhật các tập tin tài nguyên

Thêm ID ứng dụng và Account Kit client token của bạn vào trong tập tin strings.xml.

1
<string name="FACEBOOK_APP_ID">YourAPPId</string>
2
<string name="ACCOUNT_KIT_CLIENT_TOKEN">YourAccountKitClientToken</string>

Đồng thời bao gồm theme Account Kit vào trong styles.xml của bạn.

1
<style name="AppLoginTheme" parent="Theme.AccountKit" />

6. Khởi tạo SDK

Trong lớp Application của bạn, khởi tạo SDK (nhớ thêm android:name vào trong AndroidManifest.xml).

1
public class MyApplication extends Application {
2
3
    @Override
4
    public void onCreate() {
5
        super.onCreate();
6
        AccountKit.initialize(getApplicationContext());
7
    }
8
}

7. Khởi tạo quy trình đăng nhập

Chúng ta phải viết một xử lý riêng biệt cho tiến trình xác nhận qua tin nhắn SMS và email.

Đối với tin nhắn SMS, ở dòng 5, chúng ta chỉ định kiểu đăng nhập LoginType.PHONE.

1
public void onSMSLoginFlow(View view) {
2
    final Intent intent = new Intent(this, AccountKitActivity.class);
3
    AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
4
            new AccountKitConfiguration.AccountKitConfigurationBuilder(
5
                    LoginType.PHONE,
6
                    AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN

7
    // ... perform additional configuration ...

8
    intent.putExtra(
9
            AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
10
            configurationBuilder.build());
11
    startActivityForResult(intent, 101);
12
}

Đối với email, ở dòng 5, chúng ta chỉ định kiểu đăng nhập LoginType.EMAIL.

1
public void onEmailLoginFlow(View view) {
2
    final Intent intent = new Intent(this, AccountKitActivity.class);
3
    AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
4
            new AccountKitConfiguration.AccountKitConfigurationBuilder(
5
                    LoginType.EMAIL,
6
                    AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN

7
    // ... perform additional configuration ...

8
    intent.putExtra(
9
            AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
10
            configurationBuilder.build());
11
    startActivityForResult(intent, 101);
12
}

8. Thiết kế màn hình đăng nhập

Dưới đây là một bố cục đơn giản cho một màn hình hiển thị nút đăng nhập bằng tin nhắn SMS hoặc email.

1
<?xml version="1.0" encoding="utf-8"?>
2
<LinearLayout
3
        xmlns:android="https://schemas.android.com/apk/res/android"
4
        xmlns:tools="http://schemas.android.com/tools"
5
        android:id="@+id/activity_main"
6
        android:layout_width="match_parent"
7
        android:layout_height="match_parent"
8
        android:paddingLeft="@dimen/activity_horizontal_margin"
9
        android:paddingRight="@dimen/activity_horizontal_margin"
10
        android:paddingTop="@dimen/activity_vertical_margin"
11
        android:paddingBottom="@dimen/activity_vertical_margin"
12
        android:orientation="vertical"
13
        tools:context="com.chikeandroid.tutsplus_facebook_accountkit.MainActivity">
14
15
    <Button
16
            android:layout_width="match_parent"
17
            android:layout_height="wrap_content"
18
            android:text="Login By SMS"
19
            android:onClick="onSMSLoginFlow"/>
20
21
    <Button
22
            android:layout_width="match_parent"
23
            android:layout_height="wrap_content"
24
            android:text="Login By Email"
25
            android:onClick="onEmailLoginFlow"/>
26
</LinearLayout>

9. Xử lý phản hồi từ quá trình đăng nhập

Bây giờ khi người dùng cố gắng đăng nhập, chúng ta sẽ nhận được một phản hồi trong phương thức onActivityResult(). Trong phương thức này, chúng ta có thể xử lý các xác thực thành công, đã bị hủy và không thành công.

1
@Override
2
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
3
    super.onActivityResult(requestCode, resultCode, data);
4
    
5
    if (requestCode == 101) { // confirm that this response matches your request

6
        AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
7
        String toastMessage;
8
        if (loginResult.getError() != null) {
9
            toastMessage = loginResult.getError().getErrorType().getMessage();
10
            showErrorActivity(loginResult.getError());
11
        } else if (loginResult.wasCancelled()) {
12
            toastMessage = "Login Cancelled";
13
        } else {
14
            if (loginResult.getAccessToken() != null) {
15
                toastMessage = "Success:" + loginResult.getAccessToken().getAccountId();
16
            } else {
17
                toastMessage = String.format(
18
                        "Success:%s...",
19
                        loginResult.getAuthorizationCode().substring(0, 10));
20
            }
21
22
            // If you have an authorization code, retrieve it from

23
            // loginResult.getAuthorizationCode()

24
            // and pass it to your server and exchange it for an access token.

25
26
            // Success! Start your next activity...

27
            goToMyLoggedInActivity();
28
        }
29
30
        // Surface the result to your user in an appropriate way.

31
        Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show();
32
    }
33
}

Ứng dụng hoàn tất

Bây giờ chúng ta có thể chạy ứng dụng của chúng ta để kiểm tra tiến trình đăng nhập bằng tin nhắn SMS và email.

The finished appThe finished appThe finished app

Lưu ý rằng Account Kit JavaScript SDK không hỗ trợ đăng nhập WebView, do đó, bạn không thể đăng nhập những người dùng từ WebView với Account Kit. Bạn sẽ cần phải viết giao diện đăng nhập Account Kit của bạn với mã gốc.

Tổng kết

Trong hướng dẫn nhanh này, bạn đã được học về kiểu xác thực phi mật khẩu bằng cách sử dụng Facebook Account Kit: nó là gì, tại sao có thể bạn muốn cân nhắc việc sử dụng nó, và làm thế nào để cài đặt nó trong ứng dụng Android của bạn.

Tuy nhiên, một lời nhắc nhở rằng: một số xác thực phi mật khẩu là kém an toàn. Hầu hết mọi người sẽ không sử dụng nó khi bảo mật là một ưu tiên, ví dụ như với một ứng dụng ngân hàng. Vì vậy hãy sử dụng một số ý kiến về việc khi nào sử dụng nó và khi nào thì đi kèm với một xác thực truyền thống.

Để tìm hiểu thêm về Facebook Account Kit, tham khảo tài liệu chính thức. Và để tìm hiểu thêm về việc phát triển Android, hãy xem qua một số bài viết khác của chúng tôi ở đây trên Envato Tuts+!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.