我正在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>
如何更改此文件的读取权限? 谢谢:))
答案 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>
这样您的应用引擎服务器就会知道您正在使用这个只读的静态资源。