在Firebase数据库中仅存储一次用户ID

时间:2019-04-29 17:00:02

标签: java android firebase firebase-realtime-database

在我的Firebase应用程序中,我存储用户的ID。然后,我想在用户ID下存储特定数据,该ID应该可以正常工作。我的问题是,当重新打开应用程序时,将删除用户特定的数据。 我想这是因为再次添加或覆盖了用户ID,因此删除了子节点。 如果我的用法正确,如何确定我的用户ID不被覆盖?是否有一个signUp方法仅在用户首次获取其ID时运行?我曾想将其存储在signInAnonymously()方法中,但似乎每次启动时也会调用它。

这是我的登录代码:

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mAuth = FirebaseAuth.getInstance();
            mDatabase = FirebaseDatabase.getInstance().getReference();

            // active listen to user logged in or not.
            mAuthListener = new FirebaseAuth.AuthStateListener() {
                @Override
                public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                    user = firebaseAuth.getCurrentUser();
                    if (user != null) {
                        // User is signed in
                        Log.d("TAG", "onAuthStateChanged:signed_in:" + user.getUid());
                        userID = user.getUid();
                        mDatabase.child("users").child(userID).setValue(userID);
                        Log.d("uid", userID);
                    } else {
                        // User is signed out
                        Log.d("TAG", "onAuthStateChanged:signed_out");
                    }
                }
            };

            mAuth.signInAnonymously()
                    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            Log.d("TAG", "OnComplete : " +task.isSuccessful());

                            if (!task.isSuccessful()) {
                                Log.d("TAG", "Authentication Failed : ", task.getException());
                            }
                        }
                    });
   }

0 个答案:

没有答案