无法在AppEngine的.jar文件中读取Firebase .json

时间:2018-07-31 17:53:22

标签: java firebase google-app-engine jar kotlin

如何调整我的 .jar 配置,以在AppEngine上读取Firebase .json 文件?

AppEngine无法读取 .json 文件来对Java / Kotlin应用程序中的Firebase进行身份验证。独立运行时,可以在 .jar 文件中正确读取.json文件。将 .jar 提供给AppEngine时,无法读取它。

Exception in thread "main" java.io.FileNotFoundException: src/main/kotlin/utils/auth/carpecoin-media-211617-firebase-adminsdk-5d3ii-574c2a8dd4.json (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at Initialization.initializeFirestore(Initialization.kt:16)
        at Initialization.main(Initialization.kt:10)

1 个答案:

答案 0 :(得分:2)

作为AppEngine错误的解决方法,我创建了一个对象,该对象包含从FirebaseCredentialsHelper类构建的Firebase身份验证数据。返回的对象使用从Firebase控制台生成的String值。

然后,我使用Gson library将FirebaseCredentialsHelper类返回的身份验证对象转换为json,然后转换为字节输入流。

FirebaseApp.initializeApp(FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(Gson().toJson(FirebaseCredentialsHelper.get()).byteInputStream()))
.build()) 

注意:我将Firebase身份验证对象排除在版本控制之外,因为它们包含私人信息。