我正在使用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
..和我的网络都很好。
答案 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"......
}
还请注意,如果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中设置“电话认证”。该示例进行得很顺利。