Chứng thực phi mật khẩu với Account Kit
() 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.



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.



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:
- một tài khoản Facebook Developer
- một ứng dụng để tích hợp Account Kit
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.
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.
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+!