每当用户注销并尝试再次登录时,树中的所有属性都会JSON重新初始化。
JSON
这是我的代码:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_SIGN_IN) { IdpResponse response = IdpResponse.fromResultIntent(data); if (resultCode == RESULT_OK) { // Sign-in succeeded, set up the UI FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); FirebaseUserMetadata metadata =mFirebaseAuth.getCurrentUser().getMetadata(); if (metadata.getCreationTimestamp() == metadata.getLastSignInTimestamp()) { // The user is new, show them a fancy intro screen! User user = new User(firebaseUser.getUid(), firebaseUser.getDisplayName(), firebaseUser.getEmail()); mDatabaseReference.child(user.getId()).setValue(user); } else { // This is an existing user, show them a welcome back screen. Intent intent = new Intent(MainActivity.this, HomeActivity.class); startActivity(intent); } } else if (resultCode == RESULT_CANCELED) { // Sign in was canceled by the user, finish the activity Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show(); finish(); }
I tried to use user’s metadata but even that didn’t work.
Here is my JSON structure
如果我们要检查用户是否是新用户,则是相同的,如果我们检查 用户是否是首次登录。因此,要解决此问题,我们可以像 这样 isNewUser()在OnCompleteListener.onComplete回调中简单地调用方法 :
isNewUser()
OnCompleteListener.onComplete
OnCompleteListener<AuthResult> completeListener = new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser(); if (isNewUser) { Log.d("TAG", "Is New User!"); } else { Log.d("TAG", "Is Old User!"); } } } };
有关更多信息,, please see the official doc.