Firebase Phone Auth在flutter应用程序中不起作用,无论是在iOS模拟器中还是在真实设备中



我一直在尝试和搜索各种方法,以使Firebase Phone Auth在我的flutter应用程序中工作。(有一个悬而未决的问题是Firebase云消息和Firebase手机验证之间的冲突,但我不确定我的问题是否与此有关。我确实使用Firebase云信息,它运行得很好。)

在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"}}

可疑的是,错误消息使用<empty>作为我的应用程序名称,而不是我的真实应用程序名称(或默认的firebase应用程序名称__FIRAPP_default),但我不确定为什么会发生这种情况。

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

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

  • Flutter SDK=1.12.13+修补程序.5
  • firebase_core=0.4.3
  • firebase_auth=0.15.4
  • firebase_messaging=6.09

有人能够在iOS中使用Firebase Auth Phone身份验证吗?我陷入了这种不确定的状态,因为我似乎无法在网上搜索任何与此相关的信息。到目前为止,我已经多次设置iOS APN、GoogleService-info.plist、谷歌云凭据,但运气不佳。(鉴于Firebase Cloud Messaging运行良好,我怀疑这是凭据或APN设置的问题。)

回答我自己的问题,因为我找到了根本原因。

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

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

对于您在Firebase中定义和创建的每个应用程序,将在API密钥部分自动创建一个新的API密钥。在我的案例中,有一个适用于">iOS密钥(由Firebase自动创建)",另一个用于">Android密钥(由Firebase自动创建的)'"。

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

这个限制实际上是我的应用程序中无法使用手机身份验证的原因。一旦我将更改恢复为,我就不再遇到Token mismatchAuthException

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

目前,一切都在工作,因为没有限制,但我需要尽快弄清楚为什么我的应用程序及其id关联没有按预期工作,这样我才能重新添加限制。

相关内容

  • 没有找到相关文章

最新更新