首次实施Firebase Auth,也是Flutter dev的新手,我希望使用电子邮件和密码,而不是Google登录。我使用Firebase Auth的唯一示例是匿名或Google。是否有资源/教程显示如何使用signInWithEmailAndPassword方法正确设置调用?
非常感谢!
答案 0 :(得分:16)
在我的应用程序中,我有一个auth类,因为我不想使用非小部件代码丢弃我的小部件类,但是如果你愿意的话,你可以将这些代码放在你的小部件类中。
在auth.dart中我有:
final FirebaseAuth auth = FirebaseAuth.instance;
Future<FirebaseUser> handleSignInEmail(String email, String password) async {
final FirebaseUser user = await auth.signInWithEmailAndPassword(email: email, password: password);
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 {
final FirebaseUser user = await auth.createUserWithEmailAndPassword(email: email, password: password);
assert (user != null);
assert (await user.getIdToken() != null);
return user;
}
然后在我的登录/注册屏幕中,我创建了一个我的auth类的实例:
var authHandler = new Auth();
最后,在我的登录按钮onPressed回调中,我有:
onPressed: () {
authHandler.handleSignInEmail(emailController.text, passwordController.text)
.then((FirebaseUser user) {
Navigator.push(context, new MaterialPageRoute(builder: (context) => new HomePage()));
}).catchError((e) => print(e));
}
答案 1 :(得分:2)
以下是我服务的一个例子。我要求提供电子邮件,姓名和密码字段。
registerWithEmail(String name, String email, String password) async {
首先,我检查电子邮件是否已在facebook或其他地方注册。
List<String> providers = await firebaseAuth.fetchProvidersForEmail(email: email);
这不是理想的解决方案,但是如果用户已经注册,则需要处理,而不是链接电子邮件与当前用户
if (providers != null && providers.length > 0) {
print("already has providers: ${providers.toString()}");
return handleProviders(providers);
}
创建新用户
FirebaseUser newUser = await firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
await newUser.sendEmailVerification();
基本上就是这样。我更新了用户的名称,因为我有。
var userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = name;
await firebaseAuth.updateProfile(userUpdateInfo);
await newUser.reload();
以后您可以将用户保存在firestore中,其中用户uid
是文档ID。所以我可以稍后再说。
答案 2 :(得分:0)
Git存储库,其中包含使用Flutter的电子邮件/密码登录Firebase 的完整说明示例
这可能会对您有所帮助。
答案 3 :(得分:0)
此代码用于注册新用户
fb_auth.UserCredential userCredential = await fb_auth
.FirebaseAuth.instance
.createUserWithEmailAndPassword(email: email, password: password);
这是用于登录以前的用户
fb_auth.UserCredential userCredential = await fb_auth
.FirebaseAuth.instance
.signInWithEmailAndPassword(email: email, password: password)
那个 fb_auth 是
import 'package:firebase_auth/firebase_auth.dart' as fb_auth;