Я пытаюсь сохранить пользовательские данные в базе данных Firebase в реальном времени, и я использовал авторизацию в Google. Поэтому при создании дерева узлов пользователей я хочу хранить такие данные, как «Пользователи»> «uid»> userdata. Как получить Uid аутентифицированного пользователя? by acct.getId () [acct - это объект GoogleSignInAccount] ИЛИ user.getUid () [пользователь - это объект FirebaseUser]?
Код начинается здесь:
private void firebaseAuthWithGoogle (final GoogleSignInAccount acct) {
Log.d("TAG", "firebaseAuthWithGoogle:" + acct.getId());
final DatabaseReference rootRef;
rootRef = FirebaseDatabase.getInstance().getReference();
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("TAG", "signInWithCredential:success");
FirebaseUser user = mAuth.getCurrentUser();
if (acct != null) {
personName = acct.getDisplayName();
uid=user.getUid();
uid1=acct.getId();
HashMap<String,Object> userdatamap = new HashMap<>();
userdatamap.put("firstName",personName);
userdatamap.put("email",acct.getEmail());
rootRef.child("Users").child(/* uid */).updateChildren(userdatamap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(login.this,"DONE",Toast.LENGTH_SHORT).show();
}
}
});
pref = getApplicationContext().getSharedPreferences("userinfo",0);
editor = pref.edit();
editor.putString("namekey",personName);
editor.commit();
Toast.makeText(login.this,"Welcome "+personName,Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(login.this,"Profile Name Not Found",Toast.LENGTH_SHORT).show();
}
//updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w("TAG", "signInWithCredential:failure", task.getException());
Toast.makeText(login.this,"Auth Failed",Toast.LENGTH_SHORT).show();
//updateUI(null);
}
// ...
}
});
}