Внедрение технологии Android Fingerprint - PullRequest
0 голосов
/ 21 марта 2019

Я не уверен, что это правильное место, чтобы задать вопрос, связанный с потоком.Обращайтесь ко мне, если вам известен лучший раздел.

В настоящее время я работаю над веб-системой для нескольких организаций, поэтому в моей форме входа есть 3 простых поля:

  1. Код компании, такой как CNN (чтобы мы могли иметь одно и то же имя пользователя, если они работают в другой компании)
  2. Имя пользователя, например, james
  3. Пароль

Сейчас мы на самом деле изучаем технологию аутентификации по отпечаткам пальцев, о том, как она может помочь выше.

Наше предположение ниже:

  1. В нашем приложении мы предоставляем пользователю экран регистрациивместо имени пользователя / пароля они нажимают на форму большим пальцем, чтобы мы могли получить что-то, возможно, длинную случайную строку, которая представляет отпечаток, затем мы передаем этот код на сервер вместе с его профилем, и регистрация завершается.
  2. Выше приведены повторения для тысяч других наших пользователей.
  3. Пользователь зашел на экран входа в наше приложение, мы показали ему сканер, на него положили большие пальцы, мы отправили полученныекод отпечатка пальца и отправка на сервер для сопоставления, затем мы аутентифицируем этого пользователя.

Но из того, что мы изучили, кажется, что SDK отпечатка пальца не работает таким образом, он просто аутентифицируется, еслипользователь является владельцем телефона, и он не предоставляет нам код или что-то, что представляет собой отпечаток пальца.

Может ли кто-нибудь, имеющий опыт разработки работающего / развернутого приложения отпечатка пальца, поделиться со мной, как помогает отпечаток пальцав аутентификации вашего пользователя?

Спасибо.

1 Ответ

1 голос
/ 21 марта 2019

Вы должны добавить эту строку в свой manifest.xml - <uses-feature android:name="android.hardware.fingerprint" android:required="false" />

Вот пример кода, который показывает диалоговое окно отпечатка пальца и получает результат от взаимодействия с пользователем:

    private void showFingerPrintDialog() {
    final FingerprintDialogBuilder dialogBuilder = new FingerprintDialogBuilder(ContextInstance)
            .setTitle(R.string.fingerprint_dialog_title)
            .setSubtitle(R.string.fingerprint_dialog_subtitle)
            .setDescription(R.string.fingerprint_dialog_description)
            .setNegativeButton(R.string.cancel);
    dialogBuilder.show(getSupportFragmentManager(), new AuthenticationCallback() {
        @Override
        public void fingerprintAuthenticationNotSupported() {
            Log.d(TAG, "fingerprintAuthenticationNotSupported: ");
        }

        @Override
        public void hasNoFingerprintEnrolled() {
            Log.d(TAG, "hasNoFingerprintEnrolled: ");
        }

        @Override
        public void onAuthenticationError(int errorCode, @Nullable CharSequence errString) {
            Log.d(TAG, "onAuthenticationError: ");
        }

        @Override
        public void onAuthenticationHelp(int helpCode, @Nullable CharSequence helpString) {
            Log.d(TAG, "onAuthenticationHelp: ");
        }

        @Override
        public void authenticationCanceledByUser() {
            Log.d(TAG, "authenticationCanceledByUser: ");
        }

        @Override
        public void onAuthenticationSucceeded() {
            Log.d(TAG, "onAuthenticationSucceeded: ");
            /*SaveResult in db or preference*/
        }

        @Override
        public void onAuthenticationFailed() {
            Log.d(TAG, "onAuthenticationFailed: ");
        }
    });
}
...