Об учетной записи Kit
Что такое аутентификация без пароля?
Аутентификация без пароля пропускается с использованием пароля для регистрации или входа в систему. Вместо этого аутентификация пользователя подтверждается либо одноразовым кодом подтверждения SMS, отправленным на телефон пользователя, либо одноразовой ссылкой на его адрес электронной почты.
Зачем использовать аутентификацию без пароля?
- Удобный процесс входа и регистрации для ваших пользователей.
- Обеспечивает безопасный доступ к вашему приложению, поскольку пользователь не будет повторно использовать пароли или прибегать к легко угадываемым паролям (таким как «пароль»).
- Избегает налогообложения ваших пользователей с необходимостью создавать и запоминать уникальные пароли
В этом кратком учебном пособии я покажу вам, как использовать Account Kit от Facebook для аутентификации без пароля в вашем приложении Android. Ваши пользователи будут регистрироваться и входить в систему с помощью номера телефона или адреса электронной почты. Пользователям даже не нужно иметь учетную запись Facebook для аутентификации.
Кроме того, Account Kit прост в реализации и избавляет от необходимости утомительно создавать систему входа в систему.
Как работает Account Kit?
Следующая диаграмма должна прояснить, как работает Account Kit.
Аутентификация происходит в серии обменов между пользователем и приложением. Сначала пользователь инициирует вход в систему, возможно, загрузив приложение на свой телефон. Затем код подтверждения отправляется в SMS пользователя или разовая ссылка отправляется по электронной почте. После этого, если пользователь введет код проверки или щелкнет ссылку, они будут аутентифицированы для приложения.
Еще одна интересная особенность Facebook Account Kit — это то, что когда ваш пользователь вводит свой номер телефона в приложение, Account Kit попытается сопоставить его с номером телефона, подключенным к профилю Facebook пользователя. Если пользователь вошел в приложение Android Facebook и телефонные номера совпадают, Account Kit пропустит отправку кода подтверждения SMS и пользователь войдет в систему более легко.
Использование Account Kit
1. Предпосылки
Чтобы начать использовать Account Kit, вам потребуется:
2. Включить Account Kit
Перейдите на панель инструментов своего приложения, нажмите кнопку « Добавить продукт» и выберите « Account Kit» . Затем нажмите кнопку « Начать» , чтобы добавить Account Kit. То, что вы увидите, это конфигурация настроек для Account Kit.
3. Объявить зависимости
Добавьте зависимость с последней версией SDK Account Kit в файл build.gradle и синхронизируйте ваш проект.
1
2
3
4
5
6
7
|
repositories {
jcenter()
}
dependencies {
compile ‘com.facebook.android:account-kit-sdk:4.+’
}
|
4. Обновите AndroidManifest.xml
Добавьте свой идентификатор приложения Facebook, Account Kit клиентский токен (он доступен на панели настроек аккаунта) и INTERNET
разрешение на AndroidManifest. XML
1
|
<uses-permission android:name=»android.permission.INTERNET» />
|
01
02
03
04
05
06
07
08
09
10
11
|
<meta-data android:name=»com.facebook.accountkit.ApplicationName»
android:value=»@string/app_name» />
<meta-data android:name=»com.facebook.sdk.ApplicationId»
android:value=»@string/FACEBOOK_APP_ID» />
<meta-data android:name=»com.facebook.accountkit.ClientToken»
android:value=»@string/ACCOUNT_KIT_CLIENT_TOKEN» />
<activity
android:name=»com.facebook.accountkit.ui.AccountKitActivity»
android:theme=»@style/AppLoginTheme»
tools:replace=»android:theme»/>
|
5. Обновите файлы ресурсов
Включите идентификатор вашего приложения и токен клиента Account Kit в файл strings.xml .
1
2
|
<string name=»FACEBOOK_APP_ID»>YourAPPId</string>
<string name=»ACCOUNT_KIT_CLIENT_TOKEN»>YourAccountKitClientToken</string>
|
Также включите тему Account Kit в ваши стили. XML
1
|
<style name=»AppLoginTheme» parent=»Theme.AccountKit» />
|
6. Инициализируйте SDK
В своем классе приложения инициализируйте SDK (не забудьте включить имя android:name
в свой AndroidManifest.xml ).
1
2
3
4
5
6
7
8
|
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AccountKit.initialize(getApplicationContext());
}
}
|
7. Инициируйте поток входа
Мы должны написать отдельный обработчик для аутентификации по SMS и электронной почте.
Для SMS в строке 5 мы указываем тип входа LoginType.PHONE
.
01
02
03
04
05
06
07
08
09
10
11
12
|
public void onSMSLoginFlow(View view) {
final Intent intent = new Intent(this, AccountKitActivity.class);
AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
new AccountKitConfiguration.AccountKitConfigurationBuilder(
LoginType.PHONE,
AccountKitActivity.ResponseType.CODE);
// … perform additional configuration …
intent.putExtra(
AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
configurationBuilder.build());
startActivityForResult(intent, 101);
}
|
Для электронной почты в строке 5 мы указываем тип входа LoginType.EMAIL
.
01
02
03
04
05
06
07
08
09
10
11
12
|
public void onEmailLoginFlow(View view) {
final Intent intent = new Intent(this, AccountKitActivity.class);
AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
new AccountKitConfiguration.AccountKitConfigurationBuilder(
LoginType.EMAIL,
AccountKitActivity.ResponseType.CODE);
// … perform additional configuration …
intent.putExtra(
AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
configurationBuilder.build());
startActivityForResult(intent, 101);
}
|
8. Выложите экран входа
Вот простой макет для экрана, который показывает кнопки для входа с помощью SMS или электронной почты.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?xml version=»1.0″ encoding=»utf-8″?>
<LinearLayout
xmlns:android=»https://schemas.android.com/apk/res/android»
xmlns:tools=»http://schemas.android.com/tools»
android:id=»@+id/activity_main»
android:layout_width=»match_parent»
android:layout_height=»match_parent»
android:paddingLeft=»@dimen/activity_horizontal_margin»
android:paddingRight=»@dimen/activity_horizontal_margin»
android:paddingTop=»@dimen/activity_vertical_margin»
android:paddingBottom=»@dimen/activity_vertical_margin»
android:orientation=»vertical»
tools:context=»com.chikeandroid.tutsplus_facebook_accountkit.MainActivity»>
<Button
android:layout_width=»match_parent»
android:layout_height=»wrap_content»
android:text=»Login By SMS»
android:onClick=»onSMSLoginFlow»/>
<Button
android:layout_width=»match_parent»
android:layout_height=»wrap_content»
android:text=»Login By Email»
android:onClick=»onEmailLoginFlow»/>
</LinearLayout>
|
9. Обработка ответов из потока входа
Теперь, когда пользователь пытается войти в систему, мы получим ответ в onActivityResult()
. В этом методе мы можем обрабатывать успешные, отмененные и неудачные проверки подлинности.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 101) { // confirm that this response matches your request
AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
String toastMessage;
if (loginResult.getError() != null) {
toastMessage = loginResult.getError().getErrorType().getMessage();
showErrorActivity(loginResult.getError());
} else if (loginResult.wasCancelled()) {
toastMessage = «Login Cancelled»;
} else {
if (loginResult.getAccessToken() != null) {
toastMessage = «Success:» + loginResult.getAccessToken().getAccountId();
} else {
toastMessage = String.format(
«Success:%s…»,
loginResult.getAuthorizationCode().substring(0, 10));
}
// If you have an authorization code, retrieve it from
// loginResult.getAuthorizationCode()
// and pass it to your server and exchange it for an access token.
// Success!
goToMyLoggedInActivity();
}
// Surface the result to your user in an appropriate way.
Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show();
}
}
|
Завершенное приложение
Теперь мы можем запустить наше приложение для проверки потоков смс и электронной почты!
Обратите внимание, что JavaScript SDK Account Kit не поддерживает вход в WebView, поэтому вы не можете входить в систему из WebView с помощью Account Kit. Вы должны написать свой интерфейс входа в Account Kit с собственным кодом.
Вывод
Из этого краткого учебного пособия вы узнали о проверке подлинности без пароля с помощью комплекта учетных записей Facebook: что это такое, почему вы можете подумать об ее использовании и как реализовать ее в своем приложении для Android.
Однако, предупреждающее слово: некоторые считают аутентификацию без пароля менее безопасной. Большинство людей не будет использовать его, когда безопасность является приоритетом, например, с банковским приложением. Поэтому будьте осторожны в отношении того, когда его использовать и когда использовать более традиционную схему аутентификации.
Чтобы узнать больше о Facebook Account Kit, обратитесь к официальной документации . А чтобы узнать больше о разработке для Android, ознакомьтесь с некоторыми другими нашими статьями здесь на Envato Tuts +!