Firebase Phone Auth在Flitter应用程序中无法工作,无论是在iOS模拟器中还是在真实设备中

Firebase Phone Auth在Flitter应用程序中无法工作,无论是在iOS模拟器中还是在真实设备中,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我一直在尝试和寻找各种方法,使Firebase Phone Auth在我的颤振应用程序中工作。(有人在谈论Firebase云消息和Firebase电话验证之间的冲突,但我不确定我的问题是否与此相关。我确实使用Firebase云消息,它工作得非常好。) 在iOS模拟器中,每当我调用FirebaseAuth.instance.verifyPhoneNumber,我的应用程序都会打开一个网页,显示reCAPTCHA工作流,然后返回到应用程序。然后我在verificationFailed回调中看到如下错

我一直在尝试和寻找各种方法,使Firebase Phone Auth在我的颤振应用程序中工作。(有人在谈论Firebase云消息和Firebase电话验证之间的冲突,但我不确定我的问题是否与此相关。我确实使用Firebase云消息,它工作得非常好。)

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

flatter:AuthException的实例
颤振:{“错误”:{“代码”:403,“消息”:“来自此ios客户端应用程序的请求被阻止”,“错误”:[{“消息”:“来自此ios客户端应用程序的请求被阻止”,“域”:“全局”,“原因”:“禁止”}],“状态”:“权限被拒绝”}
有人怀疑错误消息将
用作我的应用程序名,而不是我的真实应用程序名(或默认firebase应用程序名,即u FIRAPP_default),但我不确定为什么会发生这种情况

在真实的iOS设备中,每当我调用
FirebaseAuth.instance.verifyPhoneNumber
,应用程序都会再次调用
verificationFailed
回调,我将
verifyPhoneNumber错误
作为代码,将
令牌不匹配
作为错误消息得到错误。这在调试版本和发布版本中都会发生

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

  • 颤振SDK=1.12.13+修补程序。5
  • firebase_核心=0.4.3
  • firebase_auth=0.15.4
  • firebase_消息=6.0.9

是否有人能够在iOS中使用Firebase Auth Phone Auth?我被困在这个边缘状态,因为我似乎无法在网上搜索任何与此相关的信息。到目前为止,我已经多次设置了iOS APN、GoogleService-info.plist和Google云凭据,但都没有成功。(考虑到Firebase云消息功能运行良好,我怀疑这是凭据或APN设置的问题。)

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

在连接到Firebase的Google云项目中,我能够找到由Firebase创建的一组API键

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

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

这一限制实际上是手机认证在我的应用程序中不起作用的原因。一旦我将更改恢复为无,我就不再遇到
令牌不匹配
AuthException

理想情况下,我应该仅将这些API密钥限制在我的应用程序中,但我的颤振应用程序似乎无法向谷歌服务证明其身份/appId/bundleId,谷歌一直拒绝我的应用程序的请求。这一定是我看到来自此ios客户端应用程序的请求被阻止的原因。错误消息


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

在我的Flitter应用程序中,无论限制/不限制,都没有任何更改,即相同的令牌错误嘿,你找到解决办法了吗?
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"}}