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 -> Authentication -> sign-in-method -> 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电话身份验证中的“找不到主机名匹配”错误(使用离子)的主要内容,如果未能解决你的问题,请参考以下文章