Flutter Firebase Auth电话身份验证即使使用测试号码也失败

时间:2018-07-25 08:54:16

标签: authentication flutter

我正在使用firebase_auth软件包在我的flutter应用程序中启用电话身份验证。我遵循了firebase-flutter教程,并设置了firebase项目和一个具有android支持的应用。

然后我按照firebase_auth示例代码创建了登录页面,但是在示例中提供的示例编号/代码时出现以下错误

PlatformException(error, Cannot create PhoneAuthCredential without either verificationProof, sessionInfo, ortemprary proof., null)

当我尝试verifyPhoneNumber时,下面的文本小部件中会显示以下错误

Phone authentication failed: Network error

..和我的网络都很好。

3 个答案:

答案 0 :(得分:2)

就我而言,我在一个页面中进行验证并在另一页面上登录。因此,我正在创建身份验证服务的两个实例,其中包括FirebaseAuth.instance对象 我认为“ FirebaseAuth.instance”不是单例,每次调用它都会返回不同的对象。

我的解决方案是将AuthService设置为Singleton,以确保一次为“ verifyPhoneNumber”和“ signInWithPhoneNumber”调用“ FirebaseAuth.instance”。

以下是代码,仅供参考,我正在使用上下文进行导航。

class AuthService {  
  FirebaseAuth auth = FirebaseAuth.instance;

  static AuthService _authService;
  static AuthService of(context)  {
    if(_authService == null) _authService = AuthService(context);
    else _authService.context = context;
    return _authService;
  }

  BuildContext context;
  AuthService(this.context);

  // your code for "verifyPhoneNumber" and "signInWithPhoneNumber"...... 
}

更新1

还请注意,如果verificationId或smsCode为空,则您将收到相同的错误消息。

答案 1 :(得分:1)

如果此插件从未为您使用,特别是对于电话身份验证,则通常是配置问题。在您的应用程序中使用之前,我将首先使示例应用程序工作并解决所有配置问题。 https://github.com/flutter/plugins/tree/master/packages/firebase_auth/example

答案 2 :(得分:0)

这并不是一个真正的答案,但是我已经在演示示例中进行过研究。其他步骤是创建Firebase应用程序,创建SHA1指纹,将json应用于android应用程序目录,并且不遵循firebase android gradle设置。要做的另一件事是在Firebase中设置“电话认证”。该示例进行得很顺利。