【问题标题】:window.FirebasePlugin.verifyPhoneNumber function response unable to use itwindow.FirebasePlugin.verifyPhoneNumber 函数响应无法使用
【发布时间】:2019-04-18 13:25:24
【问题描述】:

我已经实现了 Firebase 电话身份验证机制来登录用户,如下所示 代码:

(<any>window).FirebasePlugin.verifyPhoneNumber('+91'+this.phone, 60, function (credential) {
          //alert("sms sent successfully"+ credential.verificationId);
          //this.verificationId = credential.verificationId;
           let modal = this.modalCtrl.create(verificationPage,{verificationId: credential.verificationId});
           modal.present();

        }, error => {
           alert(JSON.stringify(error));
          console.log("error: " + error);
        });
  } 

但 credential.verificationId 值无法存储或发送到另一个页面

verify() {
    this.signInCredential = firebase.auth.PhoneAuthProvider.credential(this.verificationId, this.code);
    alert("u"+JSON.stringify(this.signInCredential));
    firebase.auth().signInWithCredential(this.signInCredential).then((info) => { alert("check"+JSON.stringify(info));}, (error) => {
    alert("err"+JSON.stringify(error));})
}

如何解决上述错误?

【问题讨论】:

    标签: android firebase ionic-framework ionic3 firebase-authentication


    【解决方案1】:

    你应该从导航参数中获取参数,直接它不会起作用。 试试

    constructor(public params: Navparams){
     }
     verify() {
       let verificationId = params.get("verificationId");
       this.signInCredential = 
       firebase.auth.PhoneAuthProvider.credential(verificationId, this.code);
       alert("u"+JSON.stringify(this.signInCredential));
       firebase.auth().signInWithCredential(this.signInCredential).then((info) =>
        { 
         alert("check"+JSON.stringify(info));}, (error) => {
         alert("err"+JSON.stringify(error));
        })
     }
    

    希望对你有帮助。

    为了您的参考,请查看这篇文章 https://medium.com/@gbrigens/ionic-3-phone-authentication-with-firebase-dbed967e95ef

    【讨论】:

    • 我无法使用 (window).FirebasePlugin.verifyPhoneNumber('+91'+this.phone, 60, function (credential) { //alert("短信发送成功"+ credential.verificationId); //this.verificationId = credential.verificationId; let modal = this.modalCtrl.create(verificationPage,{verificationId: credential.verificationId}); modal.present(); }, error = > { console.log("error:" + error); }); } 因为 credential.verificationId 值不能存储在任何变量中
    • 您在存储凭证时是否遇到任何错误?并且您正在尝试打开一个模态,它是否正在打开?
    • 我没有收到任何错误,但它显示未定义,但是当我提醒(credential.verificationId)它显示一个长字符串
    • @sunielkalwani 你可以将凭证存储在变量中,我不明白你在哪里得到未定义的错误?
    • 而不是 this.variable 使用 let、var 或常量来存储凭证,没有限制将凭证存储在变量或任何存储中
    猜你喜欢
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2019-07-25
    • 2018-01-29
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多