как войти в систему с телефона с помощью firebase? Я получаю это сообщение об ошибке «Контейнер reCAPTCHA либо не найден, либо уже содержит внутренние элементы!» - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь войти в систему, отправив OTP на номер телефона, но получаю сообщение об ошибке:

auth.RecaptchaVerifier не является функцией

Может кто-нибудь подскажите, как это исправить?

вот мой код это мой огонь. js файл в папке config

import firebase from 'firebase'
var firebaseConfig = {
    apiKey: "",
    authDomain: "prokeyy-455bb.firebaseapp.com",
    databaseURL: "https://prokeyy-455bb.firebaseio.com",
    projectId: "prokeyy-455bb",
    storageBucket: "prokeyy-455bb.appspot.com",
    messagingSenderId: "602194520114",
    appId: "",
    measurementId: "G-BLY242QNJ3"
  };
  firebase.initializeApp(firebaseConfig);
  export default firebase

а это мой код для otp

import firebase from "../config/firebase";
phoneverification(){
        window.recaptchaVerifier=  new firebase.auth.RecaptchaVerifier('recaptcha-container')
        let number='+91234567'
        var appVerifier = window.recaptchaVerifier;

        firebase.auth().signInWithPhoneNumber(number,appVerifier).then(function(e){
let code=prompt('enter opt');
if(code==null){return}
else e.confirm(code).then(function(result){
    console.log(result.user,"user");
    document.querySelector('label').textContent=result.user.phoneNumber+"number is verified"

}).catch(err=>{
    console.log(err);
})

        })
    }
                        <button className="btn btn-primary btn-block" onClick={this.phoneverification}>Sign Up</button>

может кто-нибудь помочь мне как исправить эту ошибку?

1 Ответ

1 голос
/ 03 августа 2020

Когда вы экспортируете fire из вашего config файла, это firebase.app.App объект :

const fire = firebase.initializeApp (firebaseConfig); экспорт по умолчанию fire

А объект App не имеет свойства auth. Он имеет метод auth(), но это не то место, где определяется RecaptchaVerifier.

Вам нужно будет правильно импортировать пространство имен firebase в ваш основной JavaScript . Вы можете сделать это, либо правильно экспортировав его из вашего файла config:

export default firebase

В этом случае вам, возможно, придется изменить часть вашего основного кода, чтобы адаптироваться к новому экспорту / импорту. В качестве альтернативы вы также можете импортировать пространство имен firebase в свой основной файл:

import firebase from 'firebase'

Это может существовать бок о бок с вашим существующим импортом, насколько я могу видеть.

В любом случае вам нужно будет обратиться к пространству имен auth и его RecaptchaVerifier, как показано в docs :

new firebase.auth.RecaptchaVerifier('recaptcha-container');
...