我按照说明执行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