【问题标题】:How to use Firebase Admin SDK with storage如何将 Firebase Admin SDK 与存储结合使用
【发布时间】:2018-07-04 01:33:41
【问题描述】:

我需要使用 Firebase Admin SDK 将文件添加到存储中。这似乎有问题,我不知道该怎么做。这是我的初始化代码:

FileInputStream serviceAccount = new FileInputStream("path/to/my/file.json");
FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .setDatabaseUrl("https://my-app.firebaseio.com")
        .setStorageBucket("gs://my-app.appspot.com")
        .build();

FirebaseApp.initializeApp(options);

然后,我从这段代码中得到我的桶:

Bucket bucket = StorageClient.getInstance().bucket();

但每次,我都会收到此错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient$Builder.setBatchPath(Ljava/lang/String;)Lcom/google/api/client/googleapis/services/AbstractGoogleClient$Builder;
at com.google.api.services.storage.Storage$Builder.setBatchPath(Storage.java:9263)
at com.google.api.services.storage.Storage$Builder.<init>(Storage.java:9242)
at com.google.cloud.storage.spi.v1.HttpStorageRpc.<init>(HttpStorageRpc.java:94)
at com.google.cloud.storage.StorageOptions$DefaultStorageRpcFactory.create(StorageOptions.java:54)
at com.google.cloud.storage.StorageOptions$DefaultStorageRpcFactory.create(StorageOptions.java:48)
at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:472)
at com.google.cloud.storage.StorageOptions.getStorageRpcV1(StorageOptions.java:122)
at com.google.cloud.storage.StorageImpl.<init>(StorageImpl.java:99)
at com.google.cloud.storage.StorageOptions$DefaultStorageFactory.create(StorageOptions.java:44)
at com.google.cloud.storage.StorageOptions$DefaultStorageFactory.create(StorageOptions.java:38)
at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:459)
at com.google.firebase.cloud.StorageClient.getInstance(StorageClient.java:62)
at management.AdminService.<init>(AdminService.java:29)
at Main.main(Main.java:17)

怎么了? :D 带有存储的 Google Admin SDK 教程似乎很神秘。

【问题讨论】:

  • 此错误是因为您的类路径中有较新版本的 google-cloud-storage 或较旧版本的 google-api-client。假设您使用的是最新的 Admin SDK,请尝试将您的依赖项(和传递依赖项)同步到 github.com/firebase/firebase-admin-java/blob/v5.8.0/pom.xml 中声明的内容
  • 好的,非常感谢 Hiranya,您的评论非常有用,现在可以使用了!!

标签: java firebase firebase-storage firebase-admin


【解决方案1】:

当您调用 setStorageBucket() 时,您应该只传递存储桶的名称,而不是 gs URL:

.setStorageBucket("my-app.appspot.com")

但是,如果我使用gs://,我收到的错误消息与您的不同。我使用的是 5.8.0 版本的 SDK。

你说得对,文档不是很清楚。我会在内部向团队提出问题。

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 2020-11-27
    • 2021-07-30
    • 2019-08-02
    • 2020-05-09
    • 2019-10-24
    • 2021-04-03
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多