Android com.google.firebase.storage.StorageException:用户没有访问此对象的权限
尝试从Firebase存储中删除图像时,我遇到以下错误: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
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),但在用户权限异常时失败。