【问题标题】:Firebase Phone Auth is not working in flutter app neither in iOS simulator nor in a real deviceFirebase Phone Auth 在 iOS 模拟器和真实设备中均无法在 Flutter 应用程序中运行
【发布时间】:2020-05-14 18:20:25
【问题描述】:

我一直在尝试和搜索各种方法以使 Firebase Phone Auth 在我的颤振应用程序中工作。 (有一个open issue 谈论 Firebase Cloud Messaging 和 Firebase Phone Auth 之间的冲突,但我不确定我的问题是否与此有关。我确实使用 Firebase Cloud Messaging,它工作得非常好。)。

在 iOS 模拟器中,每当我调用 FirebaseAuth.instance.verifyPhoneNumber 时,我的应用程序都会打开一个用于 reCAPTCHA 工作流程的网页,然后返回到应用程序。然后我在verificationFailed 回调中看到如下错误日志。 (根据Firebase Phone Auth Doc,iOS模拟器预计会遵循reCAPTCHA流程)

flutter: Instance of 'AuthException'
flutter: {"error":{"code":403,"message":"Requests from this ios client application <empty> are blocked.","errors":[{"message":"Requests from this ios client application <empty> are blocked.","domain":"global","reason":"forbidden"}],"status":"PERMISSION_DENIED"}}

怀疑错误消息使用 &lt;empty&gt; 作为我的应用程序名称,而不是我的真实应用程序名称(或默认的 Firebase 应用程序名称,即 __FIRAPP_DEFAULT),但我不确定为什么会这样。

在真实的 iOS 设备中,每当我调用 FirebaseAuth.instance.verifyPhoneNumber 时,应用程序都会再次调用 verificationFailed 回调,我收到错误消息,verifyPhoneNumberError 作为代码,Token mismatch 作为错误消息。这在调试版本和发布版本中都会发生。

我正在使用以下 SDK 和库版本。

  • Flutter SDK = 1.12.13+hotfix.5
  • firebase_core = 0.4.3
  • firebase_auth = 0.15.4
  • firebase_messaging = 6.0.9

有没有人能够让 Firebase Auth Phone 身份验证在 iOS 中工作?我陷入了这种困境,因为我似乎无法在网上搜索任何与此相关的信息。到目前为止,我已经多次设置 iOS APN、GoogleService-info.plist、Google Cloud Credentials,但都没有成功。 (鉴于 Firebase 云消息传递工作得非常好,我怀疑这是凭据或 APN 设置的问题。)

【问题讨论】:

  • 嘿,你找到解决办法了吗?

标签: firebase flutter firebase-authentication


【解决方案1】:

在我找出根本原因后回答我自己的问题。

在连接到 Firebase 的 Google Cloud 项目中,我能够找到一组由 Firebase 创建的 API 密钥。

https://console.cloud.google.com/apis/credentials

对于您在 Firebase 中定义和创建的每个应用,都会在 API 密钥部分自动创建一个新的 API 密钥。就我而言,有一个用于“iOS 密钥(由 Firebase 自动创建)”,另一个用于“Android 密钥(由 Firebase 自动创建)”。

嗯,默认情况下,它们不会施加任何限制,您会在键旁边看到一个黄色三角形。所以我对这些键添加了限制,以便它们只能在我的应用程序中使用。这是通过在每个 API 密钥详细信息页面中设置 应用程序限制 与 iOS 的相应捆绑 ID 和 Android 的另一个应用程序 ID 来完成的。

这个限制实际上是 Phone Auth 在我的应用程序中不起作用的原因。将更改恢复为 None 后,我不再遇到 Token mismatch 或 AuthException。

理想情况下,我应该将这些 API 密钥仅限于我的应用程序,但似乎我的 Flutter 应用程序无法向谷歌服务证明其身份/appId/bundleId,并且 Google 一直在拒绝来自我的应用程序的请求。这一定是我看到Requests from this ios client application &lt;empty&gt; are blocked. 错误消息的原因。

目前,一切正常,因为没有限制,但我需要尽快弄清楚为什么我的应用及其 id 关联没有按预期工作,以便我可以重新添加限制。

【讨论】:

  • 在我的颤振应用程序中,无论受限/不受限,都没有变化,即相同的令牌错误
猜你喜欢
  • 2020-05-23
  • 2022-01-03
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 2017-10-28
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多