如何在flutter中使用firebase通过电话号码注册用户?

问题描述 投票:0回答:2

我正在尝试在我的flutter应用程序中使用firebase创建一个登录和注册系统。

主要登录将基于电话号码

-对于注册,我打算要求:

  • 电话号码(必填)
  • 姓名
  • 州和城市

提交后,我将向该电话号码发送 OTP,以验证并成功创建用户的个人资料。

-登录时我需要该电话号码,OTP 到电话号码将被发送,然后成功登录。

我已经看到基于电子邮件和密码的登录和注册,内容如下:

  • createUserWithEmailAndPassword()
  • signInWithEmailAndPassword()

-目前,我已经找到了

verifyPhoneNumber()
但是,不知道如何注册。另外,如果没有注册,它将如何验证?

请相应地指导我。

编辑: 我没有使用 Firestore 存储任何数据。为此,我有后端使用标头中发送的身份验证令牌接收数据。

firebase flutter firebase-authentication
2个回答
2
投票

您可以首先从 Firebase 控制台启用电话号码身份验证。 完成此操作后,假设您已从表格中收集了一个电话号码。下面的代码可以实现android的auth。对于 iOS,请参阅文档。

FirebaseAuth auth = FirebaseAuth.instance;

await auth.verifyPhoneNumber(
  phoneNumber: '+91 999 999 999',
  verificationCompleted: (PhoneAuthCredential credential) async {
    
    await auth.signInWithCredential(credential);
  },
);

稍后,您可以在通过另一个表单向用户请求后创建一个包含名称、州和城市的 Firebase 集合。这里没有注册之类的东西,身份验证是基于电话号码的,如果用户是新用户,您需要请求这些详细信息,否则就是登录。


0
投票

尝试

firebase_auth 0.15.3

final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

演示

void _verifyPhoneNumber() async {

    final PhoneVerificationCompleted verificationCompleted =
        (AuthCredential phoneAuthCredential) {
      _auth.signInWithCredential(phoneAuthCredential);
      setState(() {
        _message = 'Received phone auth credential: $phoneAuthCredential';
      });
    };

    final PhoneVerificationFailed verificationFailed =
        (AuthException authException) {
      setState(() {
        _message =
            'Phone number verification failed. Code: ${authException.code}. Message: ${authException.message}';
      });
    };

    final PhoneCodeSent codeSent =
        (String verificationId, [int forceResendingToken]) async {
      widget._scaffold.showSnackBar(const SnackBar(
        content: Text('Please check your phone for the verification code.'),
      ));
      _verificationId = verificationId;
    };

    final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
        (String verificationId) {
      _verificationId = verificationId;
    };

    await _auth.verifyPhoneNumber(
        phoneNumber: //put here phone number,
        timeout: const Duration(seconds: 5),
        verificationCompleted: verificationCompleted,
        verificationFailed: verificationFailed,
        codeSent: codeSent,
        codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);
  }

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.