Как использовать FirebaseUserMetadata для проверки нового пользователя? - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу проверить, является ли пользователь новым или нет, используя 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, у меня будет следующее: Значение типа «Будущее» не может быть присвоено переменной типа « FirebaseUserMetadata. Попробуйте изменить тип переменной или приведите правый тип к «FirebaseUserMetadata».

Я думаю, что мне нужно сделать, это сравнить lastSignInTimestamp и creationTimestamp из FirebaseUserMetadata.

FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
if(new user){
updateDataNewUser(...)
}
else{
updateDataUser(...)
}

Как я могу получить эти данные из FirebaseUserMetadata в моем случае?

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Чтобы проверить, является ли пользователь новым или нет, попробуйте следующее:

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

isNewUser возвращает, является ли пользователь новым или существующим

0 голосов
/ 09 апреля 2020
 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()
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...