java - 我的 Google App Engine 项目中的文件访问被拒绝

标签 java google-app-engine firebase

我正在 Android Studio 中使用 Google App Engine 开发应用程序后端。我想使用 Firebase,因此它的 SDK 初始化的一部分是读取服务帐户凭据 JSON 文件。我将该文件添加到我的“src”目录中,并尝试像在 Firebase 文档中一样读取它:

FirebaseOptions options = new FirebaseOptions.Builder()
    .setServiceAccount(new FileInputStream("/src/serviceAccountCredentials.json"))
    .setDatabaseUrl("https://databaseName.firebaseio.com/")
    .build();

但它总是抛出异常,拒绝访问文件:

java.security.AccessControlException: 
    access denied ("java.io.FilePermission" "/src/serviceAccountCredentials.json" "read")

如何更改此文件的读取权限? 谢谢:)

最佳答案

您位于源目录中,因此编译后它应该位于类补丁的根目录中。但请确保它在那里,它实际上取决于构建工具,其中一些可以忽略 src 目录中的非源文件,因为此类文件应该位于 resources 目录中。如果是您的情况,请将文件移动到资源目录。

然后,要读取此文件,您必须将其用作资源:

InputStream cred = this.getClass()
          .getResourceAsStream("/serviceAccountCredentials.json");

FirebaseOptions options = new FirebaseOptions.Builder()
         .setServiceAccount(cred)
         .setDatabaseUrl("https://databaseName.firebaseio.com/")
         .build();

关于java - 我的 Google App Engine 项目中的文件访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37746607/

相关文章:

java - GAE - 部署到 Appspot 服务器后出现 ClassNotFoundException

swift - 在用户默认值中存储 Firestore 时间戳

firebase - 如何删除 Firebase 列表中推送的数据?

java - 请通过您的网络浏览器登录 : https://support. google.com/mail/accounts/answer/78754(失败)

python - AppEngine 中的自定义日志

java - 使用 Openzipkin Brave 与 ForkJoinPool 进行跟踪

python - 如何使用 GAE 的 Python API 将原始字节写入谷歌云存储

java - 从 Firebase 存储中获取随机图像

java - 在 CompletableFuture 中链接以返回第一个值

java - 如何在 Spring Boot 中向请求正文添加额外属性并插入数据库