android - 如何使用 FirebaseUserMetadata 检查新用户?
问题描述
我想使用 Firebase 检查用户是否是新用户。我有一个用谷歌登录的按钮
Future<FirebaseUser> googleSignIn() async {
try {
loading.add(true);
GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
GoogleSignInAuthentication googleAuth =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
loading.add(false);
return user;
} catch (error) {
return error;
}
}
如果我添加 FirebaseUserMetadata 我有这个:“Future”类型的值不能分配给“FirebaseUserMetadata”类型的变量。尝试更改变量的类型,或将右侧类型转换为“FirebaseUserMetadata”。
我想我要做的是比较来自 FirebaseUserMetadata 的 lastSignInTimestamp 和 creationTimestamp 。
FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
if(new user){
updateDataNewUser(...)
}
else{
updateDataUser(...)
}
在我的情况下,如何从 FirebaseUserMetadata 获取这些数据?
谢谢你。
解决方案
要检查用户是否是新用户,请尝试以下操作:
AuthResult user = await auth.signInWithCredential(credential);
print(user.additionalUserInfo.isNewUser);
isNewUser
返回用户是新用户还是现有用户
推荐阅读
- macos - macOS:无法在基于自定义 NSView 的类中居中 NSTextField
- firebase - FLUTTER:如何监听 Firestore 的 Collections 变化?(文档创建/删除)
- ruby-on-rails - Searchkick::ImportError — index_not_found_exception
- python - python socket getsockname没有给出ipv6地址
- php - 为什么检查数组中的键在此代码中不起作用?
- react-native - 在本机反应中发送自动语音呼叫
- sql - 如何在 SQL 中使用选择查询来查找仅包含 6 个随机数的电子邮件地址列表?
- javascript - 如何在每个项目上而不是所有项目上使用 localStorage 进行保存
- sql - Unpivot的问题
- arduino - 如何在串行通信中将 100 位数字从处理发送到 arduino