7

我离子2,创建认证系统,通过手机号码,我使用谷歌的引导 Ionic2认证火力

首先,我相信firebase.auth.RecaptchaVerifier(是必要的参数之一)

this.autVer = new firebase.auth.RecaptchaVerifier('contCatcha', { 
'size': 'invisible', 
'callback': function (response) { 
// reCAPTCHA solved, allow signInWithPhoneNumber. 
} 
}); 

和拉斯特使用auth.signInWithPhoneNumber angularfire

this.afAuth.auth.signInWithPhoneNumber("+57" + this.numeroCelular, this.autVer).then(verificationId => { 
console.log("SMS Enviado"); 
this.confor = verificationId; 
this.loading.dismiss(); 
this.estado = 1; 
this.esperarCodigo(); 
}) 

当第二个参数是firebase.auth.Reca ptchaVerifier创建

在我的电脑一切正常的浏览器,但在美孚显示以下错误信息:

我需要更换firebase.auth.RecaptchaVerifier,但我不知道是否有任何插件或亚米做,ahcer一切正常 我真的很感谢你的建议

+0

您没有提供错误。目前尚不清楚问题是什么。你能澄清吗?您是在移动离子应用程序还是移动浏览器中使用它? – bojeil

+0

对不起,这是我的第一篇文章,问题以离子形式出现,这是错误 https://cdn-enterprise.discourse.org/ionicframework/uploads/default/original/3X/a/8/a8d5ca92c55ad9c0fcad055ebaa59fe0dd480f97.png 这是我的代码 https://cdn-enterprise.discourse.org/ionicframework/uploads/default/original/3X/b/e/be41db72eaa9180bd051928b08ccc530212f3c7f.png –

+0

我发现从一个真棒信息[javebratt.com](HTTPS ://javebratt.com/firebase-phone-authentication/),请查看! – ray

回答

10

不幸的是,使用火力地堡JS库不会因为验证码一个科尔多瓦/离子环境下工作的手机认证将无法验证应用程序的来源。这是由于源文件看起来像file://assets/index.html。

您可以通过以下方式来实现它: Firebase基于Web的电话验证取决于RecaptchaVerifier实施的应用验证程序界面:https://firebase.google.com/docs/reference/js/firebase.auth.ApplicationVerifier。 它定义了一个属性'type',它应该等于'recaptcha'。 它定义了一个方法verify():使用reCAPTCHA标记解析的Promise。

你可以做什么,你需要打开一个网站,使验证码,获得验证码的令牌,然后传回您的应用程序,你会实现你自己的firebase.auth.ApplicationVerifier

最这样做安全的方式如下:

  1. 打开Chrome自定义选项卡或SFSafariViewController(不使用嵌入式网页视图)和重定向到你自己的网站,并在火力地堡控制台列入白名单,其中firebase.auth.RecaptchaVerifier会被渲染。你可以为此使用cordova-plugin-browsertab。

  2. 然后,您使用FDL(Firebase动态链接)将reCAPTCHA响应令牌传递回您的应用程序并将其添加到深层链接中。这保证只有你的应用可以打开它。您需要配置Firebase动态链接才能使其正常工作。

  3. 您需要聆听移动应用程序中的传入链接。你可以使用cordova-universal-links-plugin。

  4. 解析来自深层链接的reCAPTCHA令牌。将它重新包装在firebase.auth.ApplicationVerifier实现中。您现在可以将其传递给signInWithPhoneNumber以完成登录。

这将需要一些工作,但有必要尽量减少网络钓鱼攻击和滥用的风险。

+0

希望你能接受这个答案否?@伊萨克大卫查韦斯佩雷兹 – Sampath

+0

好推荐。这对我很好。这应该被标记为接受的答案,直到完成将电话号码身份验证合并到Cordova Firebase插件为止。 –

+0

@bojeil你为什么说“不使用嵌入式网页浏览”? – ian

1

首先,Cordova/Ionic使用file:///协议,因此Recaptcha将无法在您的应用上工作(仅在浏览器上,因为它是http)。Firebase/Recaptcha库会检查location.protocol,并期待http/https,但如上所述,Cordova并非如此。 可能的解决方法是在手机上运行本地服务器。例如cordova-httpd或cordova-plugins#local-webserver(或应用内http浏览器)。之后,您可以实现不可见的验证码(如firebase文档中所述)。但是,仍然有时用户会得到一个弹出框来解决验证码,所以它不是很理想。

由于在移动环境下验证无效(至少在大多数情况下),我开始为Cordova/Ionic开发本地实现的Firebase电话验证。我从iOS版本开始。

有人可以支持我实现java/android版本吗?

https://github.com/guyromb/cordova-firebase-phoneauth