엑스포기-기본 응용 프로그램 중포 기지 인증 전화에서 작동하는 웹,오류 ios 에서 시뮬레이터와 충돌이 없는 경고에 안드로이드

0

질문

내가 건축한 반작용-기본 응용 프로그램 엑스포,나는 단지 2 개 부품,WelcomeScreen 및 PhoneLoginScreen. 나를 구현하기 위해 노력하고 중포 기지 전화로 인증하는 작품에서는 웹에서 시뮬레이터는 오류 메시지가 나타나 Verifier._reset is not a function. (In 'verifier._reset()', 'verifiier._reset' is undefined 고,안드로이드에 그것은 단지 충돌을 클릭하면 버튼을 계속 탐색하 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

이것이 버그가 있습니다. 관리자들의"엑스포-중포 기지-recaptcha"아직를 게시하는 해결,그래서 그 날이 올 때까지,이것은 어떻게 당신이 그것을 해결 yourself:

가 node_modules/엑스포-중포 기지-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,
        });
    };
[...]

참고:당신이해야 할 것입니다 이후 모든 원사/npm installl 또는 변경에서 node_modules 까지 발행인 밀어 업데이트합니다.

오류:verifier._reset 기능은 없습니다. 서와 함께 전화를 사용하여 중포 기지,원주민 반응과 엑스포

2021-11-27 21:29:37

작동 하지 않았다. 여전히 오류
Deon Dazy
0

FirebaseRecaptchaVerifierModal attemptInvisibleVerification 충돌 안드로이드 에뮬레이터에서 이것을 보세요. 이것은 나를 돕습니다.

추가:

<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ý
..................................................................................................................