用户无权访问 gs://xxxx.appspot.com/(空)



获取"用户无权访问 gs://xxxx.appspot.com/(null(">

升级 Firebase(Firebase 5.1.0(原为 4.11.0(、FirebaseStorage 3.0.0(原为 2.1.3((并生成代码后:

这是升级前的工作代码:

imageUploadTask.observe(.success) { snapshot in
let downloadURL = snapshot.metadata!.downloadURL()!.description
addPostData(userId: userId, downloadURL: downloadURL)

}

升级后的代码,因为 downloadURL 现在已弃用用于存储元数据:

imageUploadTask.observe(.success) { snapshot in
storageRef.downloadURL { (url, error) in
guard let downloadURL = url else { return }
addPostData(userId: userId, downloadURL: downloadURL.description)
}

打印完成块中的错误将返回: "用户无权访问 gs://xxxx.appspot.com/(空(">

我尝试过:(1(检查用户是否经过身份验证(Auth.auth((.currentUser不是nil(;(2( 从 snapshot.metadata.storageReference 获取 storageRef 未解决此问题。

我想继续只允许经过身份验证的用户上传图片,并且不希望更改 Firebase 存储规则。

有什么想法吗?

我遇到了同样的问题,解决方案(在重新检查指南文档中的代码示例后(是使用表示图像文件的Child对象来调用downloadURL方法。 看看下面的代码:

// Upload the image
let imagesFolder = Storage.storage().reference().child("images")      
let imageFileName = NSUUID().uuidString + ".jpg"
let imageFileObject = imagesFolder.child(imageFileName)
imageUploadTask.observe(.success) { snapshot in
imageFileObject.downloadURL(completion: { (url, error) in
if error != nil {
print(error!.localizedDescription)
return
}
guard let downloadURL = url else { return }
print("Url: (downloadURL)")
addPostData(userId: userId, downloadURL: downloadURL.description)
})
}

最新更新