【问题标题】:Firebase Permisson denied after updating android app from play store从 Play 商店更新 android 应用后,Firebase 权限被拒绝
【发布时间】:2019-03-03 13:56:01
【问题描述】:

我开发了一个使用 Firebase 电话身份验证和 Cloud Firestore 数据库的应用,并已将其发布到 Play 商店。我的问题是,当我从 Play 商店更新应用程序时,我遇到了这样的异常(用户已经成功登录我的应用程序)。

“com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: 权限缺失或不足。”

我在调试应用程序时也多次遇到此异常。如何解决这个问题?

这是我的 Firebase 规则:

service cloud.firestore {
    match /databases/{database}/documents {
    match /{document=**} {
        allow read, write: if request.auth != null;
        }
    }
}

【问题讨论】:

  • 谢谢。我会检查并回复你
  • 不,这个答案不能解决我的问题。因为我使用的是firebase 11.8.0版
  • @Soorya 为什么你使用这样一个过时的版本 - 为什么你不向我们展示执行身份验证的代码?该异常清楚地暗示,在执行请求之前,客户端尚未经过身份验证。
  • 好的,离开版本。我已经对用户进行了身份验证(请完整阅读我的问题)。

标签: android firebase firebase-authentication google-cloud-firestore firebase-security


【解决方案1】:

我遇到了这样的异常(用户已成功登录我的应用)

这是因为您的用户已经过身份验证。为避免此类消息,只需使用以下代码行对用户进行签名:

FirebaseAuth.getInstance().signOut();

我在调试应用程序时也多次遇到此异常:

“com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: 权限缺失或不足。”

这是因为您没有设置正确的权限才能将数据写入 Cloud Firestore。要解决这个问题,请更改以下代码行:

allow read, write: if request.auth != null;

allow read, write: if request.auth.uid != null;

但如果你想允许多个用户向你的数据库写入数据,或者你只想运行一些测试,只需使用以下代码行:

allow read, write: if true;

【讨论】:

  • 嗨,Soorya!你有没有试过我上面的解决方案,它有效吗?
  • 那么 request.auth != null 和 if request.auth.uid != null 有什么区别?
  • 你为什么告诉我使用这一行“FirebaseAuth.getInstance().signOut();” ??.
  • 不同之处在于您正在检查 uid 而不是 auth 是否为空。使用这种条件是否有效?我建议您退出以避免此异常:the user is already successfully logged in my app。这不是你想要的吗?
猜你喜欢
  • 2021-08-01
  • 2020-02-20
  • 2019-08-30
  • 2020-12-13
  • 2022-01-23
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
相关资源
最近更新 更多