0

如何識別現有用戶的id(來自推送)? 我在用戶註冊時使用push創建了一個節點,但是當用戶再次嘗試登錄時,我不知道如何直接識別它,因爲它的密鑰不同。如何識別現有的用戶登錄Firebase?

使用push而不是身份驗證ID作爲我的節點是錯誤的嗎?因爲我想檢索我爲該用戶保存的數據庫中的數據。

// [START auth_state_listener] 
    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 

      if (user != null) { //I WANT TO RETRIEVE DB DATA HERE 

回答

1

你問:使用push代替身份驗證ID作爲我的節點是錯誤的嗎?答案几乎可以肯定,是的。對於FirebaseUser.getUid()狀態的文檔:

返回用於唯一標識您的用戶在你的火力地堡 項目的用戶數據庫的字符串。存儲在火力地堡 數據庫或存儲信息時,使用它,甚至在自己的後端

在您的文章中代碼的完成會是這樣的:

if (user != null) { 
     DatabaseReference ref = FirebaseDatabase.getInstance() 
       .getReference("users").child(user.getUid()); 

     ref.addListenerForSingleValueEvent(...); 
    } 
+0

哦,我看到了,我的不好,然後,我經常讀人寫使用推動創建主鍵,沒有任何進一步考慮我用它作爲我的用戶ID。 –

+0

認爲這是正確的答案。你不會把它標記爲正確的嗎? –

+0

@Goofy_Phie使用'push()'生成的密鑰對於項目沒有自然鍵的集合來說是一個很好的方法,例如:用於博客文章或者當用戶登錄時跟蹤。但對於具有自然鍵(例如用戶的UID)的項目時,最好將這些項目用作集合中的鍵。 –

0

您需要使用其他唯一標識符,例如google唯一ID或電子郵件地址。由於Firebase在節點中不接受.,因此您需要使用方法更改[email protected]中的電子郵件地址[email protected],com。在這種情況下,[email protected],com將是您唯一的標識符。希望能幫助到你。

+0

感謝,但它不是我想要 –