FIrebase-OTP berhasil dikirim tetapi tidak memverifikasi kode di reaksi android asli

Saya mencoba mengatur verifikasi OTP di aplikasi reaksi asli menggunakan Firebase. Saya mengikuti semua langkah yang diberikan dalam autentikasi telepon dokumen firebase. Sesuai kode otp berhasil dikirim tetapi tidak diverifikasi. Jika saya menggunakan nomor telepon perangkat lain maka kodenya diverifikasi tetapi jika saya menggunakan nomor telepon yang sama di mana aplikasi diinstal (aplikasi dan kartu sim dari nomor telepon itu keduanya ada di perangkat yang sama) maka memberikan respons sebagai KODE TIDAK VALID

async function confirmCode() {
    try {
        let confirmation = await props.route.params.confirmation;
        await confirmation.confirm(verifyCode);
        alert("Successfully Verified!!")
        props.navigation.navigate('home')
    } catch (error) {
        console.log('Invalid code.');
    }
}

return (
    <View style={styles.body}>

        <TextInput style={styles.textInput} placeholder="Verification Number" keyboardType="phone-pad"
            onChangeText={(text) => { setVerifyCode(text) }} />
        <TouchableOpacity onPress={() => { confirmCode() }} style={styles.button}>
            <Text style={{ color: 'white', alignSelf: 'center', fontSize: 19, fontWeight: 'bold' }}>Verify Code</Text>
        </TouchableOpacity>
    </View>
)

}


person Chaitrali    schedule 07.04.2021    source sumber


Jawaban (1)


Jika Anda mencoba dengan perangkat dan nomor yang sama maka Anda tidak akan dapat mengonfirmasi kode dengan memasukkan kode OTP secara manual.

di sini kita harus menggunakan acara onAuthStateChanged untuk memverifikasi pengguna.

Saat menggunakan perangkat dengan nomor autentikasi yang sama maka harus menambahkan pendengar acara dan menangani autentikasi pengguna di pendengar ini agar autentikasi berfungsi dengan benar.

ex:

useEffect(() => {
    const unsubscribe = auth().onAuthStateChanged(async user => {
        if (user && user.uid) {
            await dispatch(userActions.setUpUserData(currentUser.payload));
            Toast(currentUser.message);
            mounted.current && setIsLoading(false);
            mounted.current && setShowPhoneAuth(false);
        }
    });

    return () => {
        unsubscribe();
    };
}, [currentUser]);

Untuk lebih jelasnya lihat dokumen resmi. 1 - https://rnfirebase.io/auth/phone-auth 2 - https://rnfirebase.io/auth/usage#listening-to-authentication-state

person Jignesh Mayani    schedule 07.04.2021
comment
Terima kasih!! Saya Berhasil.. - person Chaitrali; 07.04.2021
comment
@ChaitraliSapre Senang membantu Anda. - person Jignesh Mayani; 07.04.2021