एक्सपो प्रतिक्रिया देशी app के साथ firebase फोन प्रमाणीकरण पर काम करता है, वेब, पर त्रुटि आईओएस सिम्युलेटर और दुर्घटनाओं के साथ कोई चेतावनी पर Android

0

सवाल

मैं निर्माण कर रहा हूँ एक प्रतिक्रिया देशी app के साथ एक्सपो, मैं केवल 2 घटकों, WelcomeScreen और PhoneLoginScreen. मैं कोशिश कर रहा हूँ लागू करने के लिए firebase फोन प्रमाणीकरण ठीक काम करता है जो वेब पर लेकिन पर आईओएस सिम्युलेटर मैं एक त्रुटि मिलती है Verifier._reset is not a function. (In 'verifier._reset()', 'verifiier._reset' is undefined और Android पर, यह बस दुर्घटनाओं जब मैं क्लिक करें जारी रखें बटन है कि करने के लिए नेविगेट PhoneLoginScreen घटक है । कोड के नीचे है:

App.js

import React from "react"

import { NavigationContainer } from "@react-navigation/native"
import { createNativeStackNavigator } from "@react-navigation/native-stack"

import WelcomeScreen from "./components/WelcomeScreen"
import PhoneLoginScreen from "./components/auth/PhoneLoginScreen"

const Stack = createNativeStackNavigator()

export default function App() {
    return (
        <NavigationContainer>
            <Stack.Navigator initialRouteName="Welcome">
                <Stack.Screen
                    name="Welcome"
                    component={WelcomeScreen}
                    options={{ headerShown: false }}
                />

                <Stack.Screen
                    name="PhoneLogin"
                    component={PhoneLoginScreen}
                    options={{ headerShown: false }}
                />
            </Stack.Navigator>
        </NavigationContainer>
    )
}

WelcomeScreen.js

import React from "react"
import { Text, View, Button } from "react-native"

export default function WelcomeScreen({ navigation }) {
    return (
        <View
            style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
            <Text>Welcome</Text>
            <Button
                title="Continue"
                onPress={() => navigation.navigate("PhoneLogin")}
            />
        </View>
    )
}

PhoneLoginScreen.js

import React, { useRef, useState } from "react"
import { firebaseApp, auth } from "../../firebase"
import {
    Text,
    View,
    TextInput,
    Button,
    StyleSheet,
    TouchableOpacity,
} from "react-native"

import {
    FirebaseRecaptchaVerifierModal,
    FirebaseRecaptchaBanner,
} from "expo-firebase-recaptcha"

import { PhoneAuthProvider, signInWithCredential } from "firebase/auth"

export default function PhoneLoginScreen() {
    const recaptchaVerifier = useRef(null)
    const [message, showMessage] = useState()
    const [phoneNumber, setPhoneNumber] = useState()
    const [verificationId, setVerificationId] = useState()
    const [verificationCode, setVerificationCode] = useState()

    const firebaseConfig = firebaseApp ? firebaseApp.options : undefined
    const attemptInvisibleVerification = true

    return (
        <View style={styles.center}>
            <FirebaseRecaptchaVerifierModal
                ref={recaptchaVerifier}
                firebaseConfig={firebaseConfig}
                attemptInvisibleVerification={attemptInvisibleVerification}
            />

            <Text style={{ marginTop: 20 }}>Enter phone number</Text>

            <TextInput
                style={{ marginVertical: 10, fontSize: 17 }}
                placeholder="+1 999 999 9999"
                autoFocus
                autoCompleteType="tel"
                keyboardType="phone-pad"
                textContentType="telephoneNumber"
                onChangeText={phoneNumber => setPhoneNumber(phoneNumber)}
            />

            <Button
                title="Send Verification Code"
                disabled={!phoneNumber}
                onPress={async () => {
                    try {
                        const phoneProvider = new PhoneAuthProvider(auth)
                        const verificationId =
                            await phoneProvider.verifyPhoneNumber(
                                phoneNumber,
                                recaptchaVerifier.current
                            )
                        setVerificationId(verificationId)
                        showMessage({
                            text: "Verification code has been sent to your phone.",
                        })
                    } catch (err) {
                        showMessage({
                            text: `Error 111: ${err.message}`,
                            color: "red",
                        })
                    }
                }}
            />
            <Text style={{ marginTop: 20 }}>Enter Verification code</Text>
            <TextInput
                style={{ marginVertical: 10, fontSize: 17 }}
                editable={!!verificationId}
                placeholder="123456"
                onChangeText={setVerificationCode}
            />
            <Button
                title="Confirm Verification Code"
                disabled={!verificationId}
                onPress={async () => {
                    try {
                        const credential = PhoneAuthProvider.credential(
                            verificationId,
                            verificationCode
                        )

                        await signInWithCredential(auth, credential)
                        showMessage({
                            text: "Phone authentication successful 
android expo firebase ios
2021-11-23 22:32:26
2
0

यह एक बग है. की देखरेख के "एक्सपो-firebase-recaptcha" अभी तक प्रकाशित करने के लिए एक तय है, तो जब तक उस दिन आता है, यह कैसे आप इसे अपने आप को ठीक:

जाने के लिए node_modules/एक्सपो-firebase-recaptcha, खोलें build फ़ोल्डर और मिल FirebaseRecaptchaVerifierModal.js.

के अंदर FirebaseRecaptchaVerifierModal जोड़ने के लिए, निम्न कार्य करने के लिए घटक परिभाषा:

_reset = () => {}

मैं शामिल है का एक टुकड़ा फ़ाइल जोड़ने के बाद खाली समारोह परिभाषा:

FirebaseRecaptchaVerifierModal.js

[...]
            else {
                this.setState({
                    visible: true,
                    visibleLoaded: false,
                    resolve,
                    reject,
                });
            }
        });
    }
    
    /**
     * Add the following line anywhere inside of the FirebaseRecaptchaVerifierModal component.
     */
    _reset = () => {}

    onVisibleLoad = () => {
        this.setState({
            visibleLoaded: true,
        });
    };
[...]

नोट: यदि आप ऐसा करने के लिए होगा के बाद हर यार्न/एनपीएम installl या परिवर्तन में node_modules तक के प्रकाशकों के लिए एक अद्यतन धक्का.

त्रुटि: सत्यापनकर्ता._reset एक समारोह में नहीं है. कोशिश कर रहा है जब के लिए संकेत के साथ फोन का उपयोग कर firebase, देशी प्रतिक्रिया और एक्सपो

2021-11-27 21:29:37

काम नहीं किया है. अभी भी त्रुटि
Deon Dazy
0

FirebaseRecaptchaVerifierModal attemptInvisibleVerification दुर्घटनाओं पर Android Emulator इस पर देखो. यह मदद मुझे अच्छी तरह से.

मैं जोड़ें :

<FirebaseRecaptchaVerifierModal ref={recaptchaVerifierRef}
     firebaseConfig={firebaseConfig} androidHardwareAccelerationDisabled
     attemptInvisibleVerification />

इस लाइन पर FirebaseRecaptchaVerifierModal इस वाला मदद करने के लिए मेरे लिए समस्या है ।

2021-12-04 10:28:43

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................