Firebase电话身份验证中的“找不到主机名匹配”错误(使用离子)

Posted

技术标签:

【中文标题】Firebase电话身份验证中的“找不到主机名匹配”错误(使用离子)【英文标题】:"Hostname match not found" error in firebase phone authentication(with ionic) 【发布时间】:2018-03-16 15:19:30 【问题描述】:

我正在尝试将“firebase 电话身份验证”与 ionic 结合使用。

但是,卡在一个问题上。

我不断收到来自

“找不到主机名匹配” 错误
.catch(function (error)  
  console.log("error! : " +  error); 
);"

login.ts(下)

import  Component  from '@angular/core';
import  IonicPage, NavController, AlertController  from 'ionic-angular';

import firebase from 'firebase';

@IonicPage()
@Component(
   selector: 'page-login',
   templateUrl: 'login.html',
)

export class LoginPage 
  public recaptchaVerifier:firebase.auth.RecaptchaVerifier;
  constructor(public navCtrl: NavController, public alertCtrl: AlertController) 

  ionViewDidLoad() 
    this.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-
    container');
  

  signIn(phoneNumber: number)
    const appVerifier = this.recaptchaVerifier;
    const phoneNumberString = "+" + phoneNumber;

    firebase.auth().signInWithPhoneNumber(phoneNumberString, appVerifier)
      .then( confirmationResult => 

        let prompt = this.alertCtrl.create(
        title: 'Enter the Confirmation code',
        inputs: [ name: 'confirmationCode', placeholder: 'Confirmation Code' ],
        buttons: [
           text: 'Cancel',
            handler: data =>  console.log('Cancel clicked'); 
          ,
           text: 'Send',
            handler: data => 
               confirmationResult.confirm(data.confirmationCode)
                 .then(function (result) 

                 ).catch(function (error) 

                 );
            
          
        ]
     );
     prompt.present();
   )
   .catch(function (error) 
      console.log("error! : " +  error);           //   <------------The place that informs this error.
   );
 

reCAPTCHA 解决后不久发生此错误

为什么会这样?

--初始化 Firebase

--login.html

【问题讨论】:

您是否从输入字段中获取国家代码和phoneNumber 我用这样的输入字段输入了国家代码 --> 8155555555(55555555 是我的电话号码)。我什至修复了这样的代码 --> const phoneNumberString = "+81-" + phoneNumber; 你试过没有连字符+81 仍然不起作用.....T T“找不到主机名匹配”发生..... 您是在 localhost 还是任何域上执行此操作? 【参考方案1】:

当您在未经过 ssl 认证的域中托管应用时,可能会出现此错误。然后,您必须在 Firebase 控制台中将您的域列入白名单。

转到Firebase Console -&gt; Authentication -&gt; sign-in-method -&gt; Authorized Domains 并添加您的域。

默认情况下localhost和任何https://域都被列入白名单。

【讨论】:

不幸的是,当我在控制台中激活身份验证提供程序(电话)时,我的域(“my-project-name.firebaseapp.com”)被自动添加到授权域中......TT 我必须将 www.mydomain.com 和 mydomain.com 都列入白名单 等了 2 天才弄明白。还有另一个选项可以在 Google Developer 中为 firebase 帐户定义域,但这根本不起作用。谢谢【参考方案2】:

发生此错误是因为当 Google 在 Number 上发送 otp 时,它与您的网站 url 匹配,并且您的 firebase 身份验证 url 与您的域或站点地址匹配,然后它向您发送 otp,否则会发生错误。

要解决错误,请转到 firebase 控制台。

    转到 firebase 控制台。

    单击身份验证。

    点击登录方式。

    向下滚动并检查授权域。

    添加您实施电话身份验证的站点地址。

【讨论】:

谢谢,这对我有用,我已经更新了授权域列表中的域名,验证码问题立即解决 我在授权域中添加了域,但它仍然没有任何其他信息?【参考方案3】:

你应该关注这里:

注意:域名需要同时添加:https://www.exam.com 和exam.com

要解决错误,请转到 firebase 控制台。

    转到 firebase 控制台。

    单击身份验证。

    点击登录方式。

    向下滚动并检查授权域。

    添加您实施电话身份验证的站点地址。

【讨论】:

【参考方案4】:

转到 Firebase > 选择您的项目 > 身份验证 > 登录方法 > 向下滚动 -> 在“授权域”部分下添加您的域。

按照照片说明:

【讨论】:

【参考方案5】:

您可以在此链接中找到答案: https://***.com/a/44091221/6120430 不幸的是,使用 Firebase JS 库的电话身份验证在 Cordova/Ionic 中不起作用...

【讨论】:

以上是关于Firebase电话身份验证中的“找不到主机名匹配”错误(使用离子)的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 身份验证 Flutter 中的电话号码

使用 Unity 进行 Firebase 电话身份验证

Flutter Firebase 电话身份验证不起作用

使用firebase电话身份验证验证失败

Firebase 身份验证 - 无法添加电话号码进行测试

Firebase 电话身份验证失败