
expo install expo-local-authenticationapp.json 파일에 다음과 같이 설정을 추가해줍니다.{
"expo": {
"plugins": [
[
"expo-local-authentication",
{
"faceIDPermission": "Allow $(PRODUCT_NAME) to use Face ID."
}
]
]
}
}android/app/src/main/AndroidManifest.xml 파일에 다음과 같이 설정을 추가해줍니다.<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />npx pod-installios/Info.plist 파일에 다음과 같이 설정을 추가해줍니다.<key>NSFaceIDUsageDescription</key>
<string>Allow $(PRODUCT_NAME) to use FaceID</string>import * as LocalAuthentication from 'expo-local-authentication';
import React from 'react';
import { Button, Text, View } from 'react-native';
export default function App() {
const handleAuthentication = async () => {
const hasHardware = await LocalAuthentication.hasHardwareAsync();
if (!hasHardware) {
alert('생체 인증을 사용할 수 없는 기기입니다.');
return;
}
const isEnrolled = await LocalAuthentication.isEnrolledAsync();
if (!isEnrolled) {
alert('생체 인증이 등록되어 있지 않습니다.');
return;
}
const result = await LocalAuthentication.authenticateAsync({
promptMessage: '생체 인증을 사용하여 로그인하세요.',
});
if (result.success) {
alert('로그인 성공!');
} else {
alert('로그인 실패!');
}
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>생체 인증을 사용하여 로그인하세요.</Text>
<Button title="로그인" onPress={handleAuthentication} />
</View>
);
}
Promise<boolean>입니다.Promise<boolean>입니다.LocalAuthenticationOptions를 받습니다.
LocalAuthenticationOptions의 쓸만한 parameter 몇 가지를 살펴보면 다음과 같습니다.strong은 Android 클래스 3 생체 인증만 허용합니다. 예를 들어 지문 또는 3D 얼굴 스캔이 있습니다.
weak에서는 Android 클래스 3 및 클래스 2 생체인증을 모두 허용합니다. 클래스 2 생체인식은 클래스 3보다 보안성이 떨어집니다. 예를 들어 카메라 기반 얼굴 잠금 해제가 있습니다.hasHardwareAsync를 사용하여 생체 인증을 사용할 수 있는지 확인합니다.isEnrolledAsync를 사용하여 생체 인증이 등록되어 있는지 확인합니다.authenticateAsync를 사용하여 생체 인증을 시도합니다.