繁体   English   中英

离子电容 Firebase 电话号码认证问题

[英]Ionic Capacitor Firebase Phone Number Authentication Problems

对于尝试使用 ionic 通过 firebase 电话号码进行身份验证的任何人,这篇文章适合您。

我花了数周时间尝试为我自己的应用程序解决这个问题,并开始使用 email,因为解决电话号码问题需要花费太多时间,但我发布这篇文章是为了避免您将时间浪费在红鲱鱼上。

问题:

电话号码只能在附加到 url 时使用,因此如果您通过网站进行离子应用程序,则通过 firebase 的电话号码身份验证将起作用,但是,如果您尝试在移动设备上进行操作,它将无法正常工作,因为 ZC3ABF12E152FCC215需要附加 url 并且移动应用程序中当然没有网址( firebase )。

选项 1:插件

因此,最简单的选择是寻找第三方插件来实现电话号码身份验证。 我相信有一个 Cordova 插件( cordova-plugin-firebase-authentication ),但是该库与电容器不兼容(兼容插件)。

我尝试实现其他一些插件但没有取得多大成功。 值得注意的是(电容器-firebase-auth 插件)。 它声称电话身份验证适用于 ios 和 android,但是,执行此操作的实际方法似乎非常复杂,并且使用我无法跟进的.p8 代码遵循不同的路径( 混淆)。 而且这个插件有一些主要的限制

选项 2:应用内浏览器

由于选项一目前似乎不太可行,因此第二个选项是将代码放在网站上进行电话号码验证,然后在您的应用程序中打开浏览器进行验证。 我花了很多时间试图让这种方法无效。 理论上似乎可行,但在实践中,它是一团糟。 这种方法的最大问题是您想要的是能够在您的移动应用程序上运行signInWithPhoneNumber(phoneNumber, appVerifier) ,因为这样您的应用程序就会像对待任何其他用户一样对待通过电话号码登录的用户,这使得通用在您的应用程序的下游更容易进行身份验证。 但是,为了做到这一点,您需要经过验证的appVerifier ,它属于 class firebase.auth.RecaptchaVerifier firebase.auth.RecaptchaVerifier应该运行 .render .render()来启动 recaptcha provlem,然后运行.verify()来验证用户执行 recaptcha 后给出的令牌( 文档)。 我尝试在网站上运行.verify() .render()然后在移动应用程序上运行 .verify(),在两者之间传递令牌。 我不确定为什么这不起作用,这可能只是我的设置有问题,但是在尝试了这个方法一个多星期后,我放弃了尝试让它工作。 我通过的令牌只是没有确认。 我不知道这两个函数是如何工作的,对于firebase.auth.RecaptchaVerifier的每个唯一实例可能有一些识别系统使这种方法无效,我真的不知道。

如果您想尝试这种方法,我建议使用cordova 插件(它与电容器项目兼容)而不是 iframe 或用于网站内应用程序浏览器的电容器浏览器插件,因为它更易于使用和在应用程序和网站之间传递数据有更好的功能。

选项 3:在 IOS 和 Android 上手动实施

I haven't tried out this method, however, theoretically, you could go into your android studio and Xcode projects to actually write swift and java code following the firebase instructions for firebase phone auth ( android tutorial ) ( ios tutorial ). 这可能会起作用,但我不确定您将如何通知您的 ionic 项目在进行身份验证时遵循 swift 和 java 文件。


请让我知道是否有任何对您有用的方法或任何解决我遇到的障碍的方法,这是我迄今为止尝试过的!

我是OP。 在做了更多的工作之后,我终于让电话身份验证系统使用电容器火力基础身份验证( https://github.com/baumblatt/capacitor-firebase-auth )工作。 我还创建了一个 git 存储库,展示了我的代码示例以及如何使用它: https://github.com/Darrow8/capacitor-phone-test

在我之前的尝试中,我遇到了让cfaSignInPhone工作的问题,但经过更多调整后,它工作了。 另一个主要问题是让firebase.auth().signInWithCredential工作。 事实证明,我必须将上述的capacitor-firebase-auth库与@angular/fire https://www.npmjs.com/package/@angular/fire结合起来

您可以简单地使用与电容器兼容的cordova-plugin-firebase-authentication,它对我有用。

https://ionicframework.com/docs/native/firebase-authentication

您好,我尝试与 Firebase Web 合作,它对我来说效果很好。 没有外部插件,只有 firebase web 实现

由于声誉而无法发表评论,但我希望能实现它,我正在浏览您的代码,但不确定在哪里调用您提到的方法。 任何反馈都将受到欢迎。 最好的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM