java - 使用 firebase admin sdk (java) 在 firebase 存储上上传文件
问题描述
我正在尝试使用适用于 java 的 firebase admin sdk 上传文件。我遵循了这个官方指南https://firebase.google.com/docs/storage/admin/start但是当我上传时出现以下错误:
线程“main”com.google.cloud.storage.StorageException 中的异常:firebase-adminsdk-s5n1d@[PROJECT_ID].iam.gserviceaccount.com 没有对 Google Cloud 项目的 serviceusage.services.use 访问权限。在 com.google.cloud.storage.spi.v1.HttpStorageRpc.translate(HttpStorageRpc.java:227) 在 com.google.cloud.storage.spi.v1.HttpStorageRpc.create(HttpStorageRpc.java:308) 在 com.google .cloud.storage.StorageImpl.create(StorageImpl.java:189) 在 com.google.cloud.storage.Bucket.create(Bucket.java:987)
这对我来说听起来好像我没有被授权,但根据指南,我应该获得对存储桶的经过身份验证的引用......
这是代码:
FileInputStream serviceAccount =
new FileInputStream("./XXX.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://[PROJECT_ID].firebaseio.com")
.setStorageBucket("[PROJECT_ID].appspot.com")
.build();
FirebaseApp.initializeApp(options);
InputStream file = new FileInputStream(filePath);
Blob blob = StorageClient.getInstance().bucket().create(fileName, file, Bucket.BlobWriteOption.userProject("[PROJECT_ID]"));
解决方案
我发现问题:
您只需删除“Bucket.BlobWriteOption.userProject("[PROJECT_ID]")”参数。
现在它工作正常。
推荐阅读
- javascript - 用 'e' Jquery 连接字符串
- java - 在解决有关 Java 中的语句和表达式的问题时遇到问题(语句 x = y = x = 0 是非法的??)
- python - 如何计算从年、月、周的乞讨到现在已经过去了多少天?
- python - 如何解决“打破外部循环”?
- macros - 将宏变量传递给函数进行插值
- javascript - 如何在更改 Web 开发的屏幕尺寸时裁剪图像
- java - 试图让字符串在新文件中打印
- c++ - 不使用左右停止工作命名空间std的简单比较
- python - 使用 numpy 初始化系列对象?
- python - 在 Google Colab 中将导入的 csv 文件作为 pandas DataFrame 的错误消息