每当用户注销并尝试再次登录时,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();
}
我尝试使用用户的元数据,但即使这样也无效。
这是我的JSON
结构
答案 0 :(得分:0)
如果我们要检查用户是否是新用户,如果我们检查用户是否第一次登录,则情况相同。所以要解决这个问题,我们可以简单地在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!");
}
}
}
};
有关更多信息,请参阅official doc。