Android com.google.firebase.storage.StorageException:用户没有访问此对象的权限

Android com.google.firebase.storage.StorageException:用户没有访问此对象的权限,android,firebase,firebase-storage,firebase-security,Android,Firebase,Firebase Storage,Firebase Security,尝试从Firebase存储中删除图像时,我遇到以下错误: com.google.firebase.storage.StorageException: User does not have permission to access this object. 我的规则是这样的: service firebase.storage { match /b/{bucket}/o { match /users/{userId}/{filename} { allow read: if

尝试从Firebase存储中删除图像时,我遇到以下错误:

com.google.firebase.storage.StorageException: User does not have permission to access this object.
我的规则是这样的:

service firebase.storage {
  match /b/{bucket}/o {
    match /users/{userId}/{filename} {
      allow read: if request.auth.uid != null;
      allow write: if request.auth.uid != null;
    }
  }
}
users > {uid} > {filename}
我的存储引用树如下所示:

service firebase.storage {
  match /b/{bucket}/o {
    match /users/{userId}/{filename} {
      allow read: if request.auth.uid != null;
      allow write: if request.auth.uid != null;
    }
  }
}
users > {uid} > {filename}
下面是函数调用:

private fun deleteImages(firebaseUser: FirebaseUser){
    val firebaseUser = FirebaseAuth.getInstance().currentUser ?: return false
    /** Delete user image from storage */
    val bucket = "http://myapp.appspot.com.storage.googleapis.com/"
    val filename = "Lx0NkP2iTzLnlFupvRq"
    Log.d(TAG, "$bucket/users/${firebaseUser.uid}/$filename")
    // successfully prints filename url: http://myapp.appspot.com.storage.googleapis.com/users/QX2Qi49j3URbK5FtmWvQT1jWHcw2/Lx0NkP2iTzLnlFupvRq
    bucket.child(bucket + "users/${firebaseUser.uid}/$filename").delete().addOnSuccessListener { Log.d(TAG, "First image deleted") }.addOnFailureListener { exception -> Log.d(TAG, "Failed to delete images: $exception") }

}

知道问题是什么吗?

解决了。问题是,我添加了bucket前缀
http://myapp.appspot.com.storage.googleapis.com/
bucket.child()
-但是
bucket.child()
已经包含bucket前缀,并且只需要子路径(
users/${firebaseUser.uid}/$filename“
)问题是,我添加了bucket前缀
http://myapp.appspot.com.storage.googleapis.com/
bucket.child()
-但是
bucket.child()
已经包含bucket前缀,并且只需要子路径(
users/${firebaseUser.uid}/$filename“

请编辑问题以显示无法按预期方式工作的代码。请清楚正在生成的引用的确切值,以便我们可以检查代码是否符合规则。还要确保用户已登录。您是否已使用firebase身份验证登录?请签出此选项以允许读、写;控制台中未授予的权限可能会被删除be@DougStevenson我添加了函数调用,其中显示了试图删除的正确文件名(包括UID),但在用户权限异常时失败。请编辑问题以显示无法按预期方式工作的代码。请清楚正在生成的引用的确切值,以便我们可以检查代码是否符合规则。还要确保用户已登录。您是否已使用firebase身份验证登录?请签出此选项以允许读、写;控制台中未授予的权限可能会被删除be@DougStevenson我添加了函数调用,其中显示了试图删除的正确文件名(包括UID),但在用户权限异常时失败。