使用Heroku

时间:2017-05-30 17:25:18

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

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

Initialize the Firebase Admin SDK

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

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文件?

2 个答案:

答案 0 :(得分:0)

我无法记住原因,但您需要修复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

答案 1 :(得分:0)

我遇到了同样的问题。您只需要使用this之类的内容转义json中的所有特殊字符。