jav*_*low 5 firebase firebase-authentication flutter
第一次实施Firebase Auth,也是Flutter dev的新手,我希望使用电子邮件和密码,而不是Google登录.我使用Firebase Auth的唯一示例是匿名或Google.是否有资源/教程显示如何使用signInWithEmailAndPassword方法正确设置调用?
非常感谢!
小智 23
在我的应用程序中,我有一个auth类,因为我不喜欢使用非小部件代码丢弃我的小部件类,但是如果你愿意,你可以将这些代码放在你的小部件类中.
在auth.dart中我有:
final FirebaseAuth auth = FirebaseAuth.instance;
Future<FirebaseUser> handleSignInEmail(String email, String password) async {
AuthResult result = await auth.signInWithEmailAndPassword(email: email, password: password);
final FirebaseUser user = result.user;
assert(user != null);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await auth.currentUser();
assert(user.uid == currentUser.uid);
print('signInEmail succeeded: $user');
return user;
}
Future<FirebaseUser> handleSignUp(email, password) async {
AuthResult result = await auth.createUserWithEmailAndPassword(email: email, password: password);
final FirebaseUser user = result.user;
assert (user != null);
assert (await user.getIdToken() != null);
return user;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的登录/注册屏幕中,我创建了一个我的auth类的实例:
var authHandler = new Auth();
Run Code Online (Sandbox Code Playgroud)
最后,在我的登录按钮onPressed回调我有:
onPressed: () {
authHandler.handleSignInEmail(emailController.text, passwordController.text)
.then((FirebaseUser user) {
Navigator.push(context, new MaterialPageRoute(builder: (context) => new HomePage()));
}).catchError((e) => print(e));
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务中的一个示例。我要求提供电子邮件、姓名和密码字段。
registerWithEmail(String name, String email, String password) async {
Run Code Online (Sandbox Code Playgroud)
首先,我检查电子邮件是否已经在 facebook 或其他东西上注册。
List<String> providers = await firebaseAuth.fetchProvidersForEmail(email: email);
Run Code Online (Sandbox Code Playgroud)
这不是理想的解决方案,但您希望处理用户是否已注册,而不是将电子邮件与当前用户链接
if (providers != null && providers.length > 0) {
print("already has providers: ${providers.toString()}");
return handleProviders(providers);
}
Run Code Online (Sandbox Code Playgroud)
创建新用户
FirebaseUser newUser = await firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
await newUser.sendEmailVerification();
Run Code Online (Sandbox Code Playgroud)
基本上就是这样。我更新了用户的名称,因为我拥有它。
var userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = name;
await firebaseAuth.updateProfile(userUpdateInfo);
await newUser.reload();
Run Code Online (Sandbox Code Playgroud)
稍后您可以将用户保存在您的 Firestore 中,其中用户uid是文档 ID。所以我以后可以得到它。
| 归档时间: |
|
| 查看次数: |
8072 次 |
| 最近记录: |