小编典典

注销并登录后,用户信息将重新初始化

java

每当用户注销并尝试再次登录时,树中的所有属性都会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

enter image description
here


阅读 211

收藏
2020-09-28

共1个答案

小编典典

如果我们要检查用户是否是新用户,则是相同的,如果我们检查
用户是否是首次登录。因此,要解决此问题,我们可以像 这样
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
.

2020-09-28