Как зарегистрировать новый отпечаток на устройстве? - PullRequest
1 голос
/ 08 апреля 2020

Я использую эту библиотеку в RN для реализации сканирования отпечатков пальцев react-native-fingerprint-scanner, и она прекрасно работает со сканированием, но я хотел бы реализовать функцию, которая регистрирует новый отпечаток для этого приложения. Я был абсолютно не в состоянии найти что-либо в inte rnet, связанном с этим.

Вот код, который я реализовал до сих пор:

import React, { Component } from 'react';
import {
    Alert,
    Image,
    Text,
    TouchableOpacity,
    View,
    ViewPropTypes
} from 'react-native';
import FingerprintScanner from 'react-native-fingerprint-scanner';
import PropTypes from 'prop-types';

import ShakingText from './ShakingText.component';
import styles from './FingerprintPopup.component.styles';

class FingerprintPopup extends Component {

    constructor(props) {
        super(props);
        this.state = { errorMessage: undefined };
    }

    componentDidMount() {
        FingerprintScanner
            .authenticate({ onAttempt: this.handleAuthenticationAttempted })
            .then(() => {
                this.props.handlePopupDismissed();
                Alert.alert('Fingerprint Authentication', 'Authenticated successfully');
            })
            .catch((error) => {
                this.setState({ errorMessage: error.message });
                this.description.shake();
            });
    }

    componentWillUnmount() {
        FingerprintScanner.release();
    }

    handleAuthenticationAttempted = (error) => {
        this.setState({ errorMessage: error.message });
        this.description.shake();
    };

    render() {
        const { errorMessage } = this.state;
        const { style, handlePopupDismissed } = this.props;

        return (
            <View style={styles.container}>
                <View style={[styles.contentContainer, style]}>

                    <Image
                        style={styles.logo}
                        source={require('../pictures/finger_print.png')}
                    />

                    <Text style={styles.heading}>
                        Fingerprint{'\n'}Authentication
          </Text>
                    <ShakingText
                        ref={(instance) => { this.description = instance; }}
                        style={styles.description(!!errorMessage)}>
                        {errorMessage || 'Scan your fingerprint on the\ndevice scanner to continue'}
                    </ShakingText>

                    <TouchableOpacity
                        style={styles.buttonContainer}
                        onPress={handlePopupDismissed}
                    >
                        <Text style={styles.buttonText}>
                            BACK TO MAIN
            </Text>
                    </TouchableOpacity>

                </View>
            </View>
        );
    }
}

FingerprintPopup.propTypes = {
    style: ViewPropTypes.style,
    handlePopupDismissed: PropTypes.func.isRequired,
};

export default FingerprintPopup;

РЕДАКТИРОВАТЬ: Или, по крайней мере, я хотел бы предложить пользователю установить отпечаток пальца, если они уже не делают иметь любой зарегистрированный в телефоне палец.

1 Ответ

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

Я обнаружил, что ни одна из ОС (Android, iOS) не предоставит вам доступ к цепочке для ключей, в которой хранятся учетные данные, по соображениям безопасности. Тем не менее, я могу использовать то же самое, что хранится в памяти устройства пользователем, чтобы получить доступ к моему приложению так же, как и к другим приложениям, если у них реализована функция отпечатка пальца.

В общем, вы не можете зарегистрировать новый уникальный отпечаток ТОЛЬКО для своего приложения!

...