Reputation: 5541
I am implementing biometric authentication for the application using react-native-fingerprint-scanner
npm, with this npm I am not able to ensure that the device support biometric authentication or not, only for touch id
is working for me.
How can I achieve Face Id
, Passcode
authentication ?
Verified using react-native-touch-id
but it is not working for me.
Is there any way to achieve authentication on both platforms iOS and Android?
Reference:Link
Upvotes: 12
Views: 13243
Reputation: 148
react-native-touch-id
will work for both TouchID and FaceID
I have updated the repo so now if you want to use passcode after face ID or Touch ID fails than use will be prompted to enter the PIN (only for ios)checkout my repo
https://github.com/avaiyakapil/react-native-touch-id
import TouchID from 'react-native-touch-id';
TouchID.authenticate('Authentication')
.then(success => {
// Success code
})
.catch(error => {
// Failure code
});
Upvotes: 0
Reputation: 1
enter image description here // use this package import RNBiometrics from "react-native-simple-biometrics"; this is both for touchId and passcode for android and ios
Upvotes: 0
Reputation: 9
//this code is for checking whether touch id is supported or not
TouchID.isSupported()
.then(biometryType => {
// Success code
if (biometryType === 'FaceID') {
console.log('FaceID is supported.');
} else if (biometryType === 'TouchID'){
console.log('TouchID is supported.');
} else if (biometryType === true) {
// Touch ID is supported on Android
}
})
.catch(error => {
// Failure code if the user's device does not have touchID or faceID enabled
console.log(error);
});
Upvotes: -2
Reputation: 6122
react-native-touch-id
supports FaceId too. But, is not actively maintained anymore. So, they recommend to use expo local authentication. It works in all react native applications regardless of expo or not.
To use this, first you have to install react-native-unimodules
. follow this guide https://docs.expo.io/bare/installing-unimodules/
Once it is installed you can install it by
npm install expo-local-authentication
add following line to your import
import LocalAuthentication from 'expo-local-authentication';
After that, we can use it.
async function biometricAuth(){
const compatible = await LocalAuthentication.hasHardwareAsync();
if (compatible) {
const hasRecords = await LocalAuthentication.isEnrolledAsync();
if (hasRecords) {
const result = await LocalAuthentication.authenticateAsync();
return result;
}
}
}
It will automatically choose between available local authentication (TouchID, FaceID, Number lock, Pattern lock etc) and authenticate the user.
Upvotes: 3
Reputation: 2533
react-native-touch-id
should work for both TouchID and FaceID.
iOS allows the device to fall back to using the passcode, if faceid/touch is not available. this does not mean that if touchid/faceid fails the first few times it will revert to passcode, rather that if the former are not enrolled, then it will use the passcode.
You can check to see if its supported first.
const optionalConfigObject = {
fallbackLabel: 'Show Passcode',
passcodeFallback: true,
}
TouchID.isSupported(optionalConfigObject)
.then(biometryType => {
// Success code
if (biometryType === 'FaceID') {
console.log('FaceID is supported.');
} else {
console.log('TouchID is supported.');
}
})
.catch(error => {
// Failure code
console.log(error);
});
Upvotes: 1