我正在进行一个项目,其中用户数据将保存在 Fire store 中。当用户使用 Google 登录时,我会为其创建新的文档。以下是我的代码:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:gfd_official/User/User.dart';
import 'package:gfd_official/services/database.dart';
import 'package:google_sign_in/google_sign_in.dart';
class GSignInhelp {
final FirebaseAuth _auth = FirebaseAuth.instance;
//Firebase User
Userdat _userFromFirebase(User user) {
return user != null ? Userdat(uid: user.uid) : null;
}
//auth change user stream
Stream<Userdat> get user {
return _auth.authStateChanges().map(_userFromFirebase);
}
Future signInWithGoogle() async {
GoogleSignIn googleSignIn = GoogleSignIn();
final account = await googleSignIn.signIn();
final auth = await account.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: auth.accessToken,
idToken: auth.idToken,
);
try {
final res = await _auth.signInWithCredential(credential);
User user = res.user;
await DatabaseService(uid: user.uid)
.updateUserRole(user.displayName, user.email, 'basic');
return _userFromFirebase(user);
} catch (e) {
print(e.toString());
return null;
}
}
Future logOut() async {
try {
GoogleSignIn().signOut();
return await _auth.signOut();
} catch (e) {
print(e.toString());
return null;
}
}
}
我成功地能够在Fire store中更改用户角色,但是正如您所看到的,当用户登录时,数据库值将被设置为默认值,但我不想要这样。那么,我的问题是,如何检查用户是第一次登录还是返回用户。
如果用户是返回用户,则我不想在Fire store中重置用户数据,如果用户是新用户,则在Fire store中创建具有默认值的文档。
总之,我如何检查用户使用Google登录时是现有用户还是新用户?