你混淆了兩兩件事:
- 火力地堡數據庫有一個名爲
push()
方法,其產生統計學上保證是唯一的ID。
- Firebase身份驗證會爲每個註冊用戶生成一個UID,該用戶在所有用戶中都是唯一的。
這兩個值之間沒有任何關係。
如果要標識用戶,請向用戶註冊Firebase身份驗證,並使用用戶的UID標識它們。如果您不希望用戶必須登錄,請使用anonymous authentication。這個簡單:
FirebaseAuth.getInstance().signInAnonymously();
然後你通過等待它們被註冊得到他們的UID:
FirebaseAuth.getInstance(). addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
});;
的UID被自動存儲在設備上。因此,當用戶重新啓動應用程序時,也會觸發onAuthStateChanged
。如果用戶之前未登錄,請務必只撥打signInAnonymously
。
「但我可以在設備上存儲此密鑰?」 - Firebase數據庫也提供脫機支持。您可以閱讀更多關於它的信息(https://firebase.google.com/docs/database/android/offline-capabilities) –