带有 Heroku 的 Firebase Admin SDK

Firebase Admin SDK with Heroku

我正在尝试使用 Heroku 实例初始化 Firebase Admin SDK 运行宁 Java Spring 应用程序。 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 文件?

我不记得为什么,但你需要像这样修复 JSON 环境变量中的空白:

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

我 运行 遇到了同样的问题。您只需要使用 this.

之类的内容转义 json 中的任何特殊字符