Как вернуть логическое значение или просто обещание, которое уведомляет, когда аутентификация прошла успешно? - PullRequest
1 голос
/ 09 апреля 2020

Я реализовал код для аутентификации по отпечатку пальца в React Native, используя react-native-fingerprint-scanner, и он работает нормально. Мое беспокойство может показаться довольно глупым, но я действительно застрял на этом, когда аутентификация прошла успешно, я понятия не имею, как это проверить, чтобы я мог вызвать setState там. Этот код просто возвращает строку:

FingerprintScanner
        .authenticate((description, onAttempt) => {
            if (description) {
                this.setState({ Authenticated: true })
            }
            //description: 'Log in with Biometrics'
        })
        .then(() => {
            this.props.onAuthenticate();
        })

Примечание: выполнение никогда не повторяется .then() обратный вызов, иначе я бы просто установил там состояние. Не знаю, почему это так!

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

Полагаю, вы не очень хорошо читаете пример документации . обратите внимание на следующие коды:

componentDidMount() {
  FingerprintScanner
    .authenticate({ // calling the fingerprint authentication pop-up and it waits for your acts
      description: 'the description for your user that what does he/she to do',
    })
    .then(() => { // successful callback
      this.props.handlePopupDismissed(); // close the auth pop-up
      // here, do what you want after successful authentication passing
    })
    .catch((error) => { // failure callback (fallback)
      this.props.handlePopupDismissed(); // close the auth pop-up
      // here, do what you want after failing the authentication by user
    });
}

Комментарии внутри приведенных выше кодов описывают все очевидно.

0 голосов
/ 10 апреля 2020

Перед вызовом Authenticate или после него мне нужно вызвать этот метод для освобождения кэша:

FingerprintScanner.release();

Таким образом, пользователь может отменить и повторить попытку в любое время.

0 голосов
/ 09 апреля 2020
FingerprintScanner
  .authenticate({ description: 'Scan your fingerprint on the device scanner to continue' })
  .then(() => {
    //put your set state here
    Alert.alert('Authenticated successfully');
  })
  .catch((error) => {
    Alert.alert(error.message);
  });
}

Надеюсь, это поможет

...