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

时间:2016-06-10 11:03:21

标签: java google-app-engine firebase

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

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

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="http://crm.studenttravel.us/js/sort.js"></script>
<table class="sortable">
  <thead>
    <tr>
     <th>Manager</th> 
     <th>name</th>
     <th>age</th>
  </tr>
    </thead>
  <tbody>
    <tr>
     <td>Alex manager</td> 
     <td>Victor</td>
     <td>20</td>
  </tr>
  <tr>
     <td>Alex manager</td> 
     <td>Alber</td>
     <td>26</td>
  </tr>
   <tr>
     <td>Alex manager</td> 
     <td>Jessica</td>
     <td>46</td>
  </tr>
   <tr>
     <td>Fred manager</td> 
     <td>Alisa</td>
     <td>16</td>
  </tr>
   <tr>
     <td>Fred manager</td> 
     <td>Dan</td>
     <td>20</td>
  </tr>
  </tbody>
</table>

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

2 个答案:

答案 0 :(得分:1)

您位于源目录中,因此在编译之后它应该位于classpatch的根目录下。但确保它存在,它实际上依赖于构建工具,其中一些可以忽略src目录中的非源文件,因为这些文件应该在resources目录中。如果是你的情况,将文件移动到资源目录。

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

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

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

答案 1 :(得分:0)

您需要在标签下的appengine-web.xml文件中添加该文件。

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>myApplicationId</application>
    <version>1</version>
    <threadsafe>true</threadsafe>
    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    </system-properties>
    <resource-files>
        <include path="secret.json" />
    </resource-files>
</appengine-web-app>

这样您的应用引擎服务器就会知道您正在使用这个只读的静态资源。