我正在尝试在我的flutter应用程序中使用firebase创建一个登录和注册系统。
主要登录将基于电话号码。
-对于注册,我打算要求:
提交后,我将向该电话号码发送 OTP,以验证并成功创建用户的个人资料。
-登录时我需要该电话号码,OTP 到电话号码将被发送,然后成功登录。
我已经看到基于电子邮件和密码的登录和注册,内容如下:
createUserWithEmailAndPassword()
signInWithEmailAndPassword()
-目前,我已经找到了
verifyPhoneNumber()
但是,不知道如何注册。另外,如果没有注册,它将如何验证?
请相应地指导我。
编辑: 我没有使用 Firestore 存储任何数据。为此,我有后端使用标头中发送的身份验证令牌接收数据。
您可以首先从 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 集合。这里没有注册之类的东西,身份验证是基于电话号码的,如果用户是新用户,您需要请求这些详细信息,否则就是登录。
尝试
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);
}
希望有帮助