【问题标题】:Firebase Admin SDK with Heroku带有 Heroku 的 Firebase Admin SDK
【发布时间】:2017-10-31 06:58:00
【问题描述】:

我正在尝试使用运行 Java Spring 应用程序的 Heroku 实例初始化 Firebase Admin SDK。 Firebase 指令直接引用 .json 文件。

Initialize the Firebase Admin SDK

我不想将我的 admin SDK json 文件直接包含在我的 git 存储库中,因为我不想暴露我的 firebase 凭据。为了访问 Heroku 中的 .json 值,我创建了一个环境变量,其中包含 Firebase Admin SDK .json 文件的内容。我在本地开发环境中做了同样的事情,应用程序通过使用这种方法访问环境变量来工作:

String serviceAccountJson = System.getenv("SERVICE_ACCOUNT_JSON");
InputStream serviceAccount = new ByteArrayInputStream(serviceAccountJson.getBytes(StandardCharsets.UTF_8));
FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))'
    .setDatabaseUrl("https://myfirebase-app.firebaseio.com/")
    .build();
FirebaseApp.initializeApp(options);

当我尝试在 Heroku 中运行应用程序时,它会在 firebase 尝试初始化时崩溃。

是否有任何变通方法或其他方法可以访问不在 .git 存储库中但在 Heroku 服务器上可用的 .json 文件?

【问题讨论】:

标签: java spring heroku firebase-realtime-database firebase-admin


【解决方案1】:

我不记得为什么了,但是您需要像这样修复 JSON env var 中的空格:

private static String massageWhitespace(String s) {
    String newString = "";
    for (Character c : s.toCharArray()) {
        if ("00a0".equals(Integer.toHexString(c | 0x10000).substring(1))) {
            newString += " ";
        } else {
            newString += c;
        }
    }
    return newString;
}

这是working example app

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。您只需要使用this 之类的东西来转义json 中的任何特殊字符。

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 2021-07-29
      • 2020-04-10
      • 1970-01-01
      • 2018-08-18
      • 2023-03-14
      相关资源
      最近更新 更多