【问题标题】:How to use FirebaseUserMetadata to check new user?如何使用 FirebaseUserMetadata 检查新用户?
【发布时间】:2020-04-09 13:23:31
【问题描述】:

我想使用 Firebase 检查用户是否是新用户。我有一个使用 google 登录的按钮

  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 获取这些数据?

谢谢。

【问题讨论】:

  • 是的,它正在工作,谢谢

标签: android firebase flutter dart


【解决方案1】:

要检查用户是否是新用户,请尝试以下操作:

AuthResult user = await auth.signInWithCredential(credential);
print(user.additionalUserInfo.isNewUser);

isNewUser 返回用户是新用户还是现有用户

【讨论】:

    【解决方案2】:
     private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
        Log.d(TAG, "firebaseAuthWithGoogle:" + acct.id!!)
        showProgressDialog()
    
        val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
        mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
    
                    firebaseUser = mAuth!!.currentUser
    
                    FirebaseInstanceId.getInstance().instanceId
                        .addOnCompleteListener(OnCompleteListener { task ->
                            if (!task.isSuccessful) {
    
                                return@OnCompleteListener
                            }
    
                            // Get new Instance ID token
    
                           // this is a new user
                            buildThatNoob()
    
                        })
    
                } else {
    
                    OurToast.myToast(this, "Something went Wrong ... try again later")
                    val i = Intent(baseContext, Launcher::class.java)
                    startActivity(i)
                    finish()
                }
    
                hideProgressDialog()
            }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多