无法使用最新的Firebase SDK依赖项解析FirebaseOptions

时间:2017-11-07 11:28:43

标签: spring maven firebase spring-boot spring-security-oauth2

我试图通过以下教程将我的spring-boot rest api与Firebase集成: savicprvoslav

我需要使用由前端应用程序生成的Firebase SDK 验证userTokenId

使用上面的git指南

<dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-server-sdk</artifactId>
            <version>3.0.3</version>
        </dependency>

已被弃用并建议使用最新的Firebase SDK [ maven repository]

根据Firebase SDK集成指南,我们应该使用

<dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-admin</artifactId>
            <version>5.4.0</version>
        </dependency>

旧练习:

InputStream inputStream = FirebaseConfig.class.getClassLoader().getResourceAsStream(configPath);

        FirebaseOptions options = new FirebaseOptions.Builder().setServiceAccount(inputStream)
                .setDatabaseUrl(databaseUrl).build();

新惯例:

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = new FirebaseOptions.Builder()
  .setCredentials(GoogleCredentials.fromStream(serviceAccount))
  .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
  .build();

我曾尝试使用它(删除旧的),但它无法解决许多依赖项,例如 FirebaseOption ,只能由旧的maven依赖项解析( firebase-server-sdk 3.0.3

我真的很困惑!找不到任何更新的示例项目。示例项目非常有用(初始化firebase sdk的示例代码)。

有人可以帮忙吗?

感谢advnace

1 个答案:

答案 0 :(得分:3)

幸运的是,Firebase已经更新了他们的文档,现在建议使用以下maven configuraiton,这样可以完美地解决问题。我认为这是一个过时的文档问题。

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>5.5.0</version>
</dependency>

请点击此链接Firebase SDK Installation guide

此外,如果您落后于公司代理,则需要像这样设置代理:

System.setProperty("https.proxyHost", "your_proxy_host");
System.setProperty("https.proxyPort", "your_proxy_port");

初始化Firebase实例的完整代码是:

 URL fileUrl = FirebaseConfig.class.getClassLoader().getResource(configPath);
FileInputStream fisTargetFile = new FileInputStream(fileUrl.getFile());
System.setProperty("https.proxyHost", "your_proxy_host");
System.setProperty("https.proxyPort", "your_proxy_port");
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(fisTargetFile))
            .setDatabaseUrl(databaseUrl)
            .build();
    FirebaseApp.initializeApp(options);

希望它对别人有所帮助。