我按照說明執行Google登錄: https://firebase.google.com/docs/auth/android/google-signin#authenticate_with_firebase 身份驗證和登錄工作正常,用戶已通過身份驗證並簽名-in和監聽器被調用:Firebase 3在第一次登錄Google後拒絕,第二次登錄後工作
mAuthListener = 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");
}
}
然而,試圖從具有標準的安全規則的用戶節點/路徑閱讀時:
"users": {
"$user_id": {
".read": "auth !== null && auth.uid === $user_id",
".write": "auth !== null"
}
}
與後手動觸發以下代碼:
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
userRef.child(uid).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot data) {
...
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "fb sync onCancelled: " + error.getMessage());
}
});
onCancelled
被稱爲與 「權限被拒絕」。該uid
是正確的,等於爲返回由firebaseAuth.getCurrentUser().getUid()
現在重要的是,一切,如果我註銷和重新登錄的,或者如果我終止,並重新啓動應用程序正常工作的用戶ID 。所以我猜想在初始登錄後FirebaseAuth狀態必定有問題,或者我可能再次錯過某些內容..?
測試firebase-*:9.0.2
和play-services-auth:9.0.2
以及9.2.0
。
你能告訴它是如何失敗的一個完整的最少的樣品?例如:你什麼時候設置'uid'的值?你什麼時候附加聽衆?創建這樣的[MCVE](http://stackoverflow.com/help/mcve)是隔離問題的好機會,並且使我們更容易提供幫助。 –
從這裏看起來不錯。需要更多的代碼。 – devprashant