gpt4 book ai didi

android - 首次登录 Google 后 Firebase 3 权限被拒绝,第二次后有效

转载 作者:搜寻专家 更新时间:2023-11-01 09:45:56 25 4
gpt4 key购买 nike

我已根据说明实现了 Google 登录: https://firebase.google.com/docs/auth/android/google-signin#authenticate_with_firebase身份验证和登录工作正常,用户通过身份验证并登录,监听器被调用:

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.2play-services-auth:9.0.2 以及 9.2.0 进行测试。

最佳答案

我对 Firebase 实时数据库的观察。

It caches data on server side before adding to database (for a few milliseconds).

Result:

Read operations are few milliseconds faster than write operations.

  • 您的请求发生了什么:
    • 它到达服务器并请求实时数据库中仍然不可用的数据。
  • 为什么会这样:
    • 因为它已缓存并仍将添加到实时数据库中。
    • 所有这些缓存和将数据添加到实时数据库只需要几毫秒的时间,但是当您在添加后立即调用数据时这很重要,因为您的获取数据请求在节点创建之前已经到达服务器。
    • 这就是它显示权限被拒绝的原因。
  • 当这没有发生时:

    • 当您的设备使用低速互联网连接时,您的请求会延迟 1-3 秒到达 Firebase 服务器,这是自然发生的。所以那里不会出现这个问题。
  • 现在要做什么:

    • 在第一次请求数据之前引入 2-3 秒的延迟。
    • 这为整个身份验证、节点创建和添加数据的操作提供了足够的时间来完成。
    • 从那以后一切都会很顺利。

关于android - 首次登录 Google 后 Firebase 3 权限被拒绝,第二次后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com