Android 为什么Firebase数据库安全规则不适用于经过身份验证的REST API?

Android 为什么Firebase数据库安全规则不适用于经过身份验证的REST API?,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我正在使用Firebase数据库,并为测试设置了一个安全规则 ".write":false 阅读总是真实的 现在,当我在android应用程序中使用客户端SDK编写任何内容时,正如预期的那样,数据库中的任何地方都会拒绝写入 然而,当我使用经过身份验证的RESTAPI补丁请求在任何地方编写任何内容时,它总是成功的 令牌的生成如下所示: //googleCredAhmedabad and scopedAhmedabad are GoogleCredential objects

我正在使用Firebase数据库,并为测试设置了一个安全规则

".write":false
阅读总是真实的

现在,当我在android应用程序中使用客户端SDK编写任何内容时,正如预期的那样,数据库中的任何地方都会拒绝写入

然而,当我使用经过身份验证的RESTAPI补丁请求在任何地方编写任何内容时,它总是成功的

令牌的生成如下所示:

       //googleCredAhmedabad and scopedAhmedabad are GoogleCredential objects

       InputStream is = getServletContext().getResourceAsStream("/WEB-INF/firebaseauth/myserviceaccountfile.json");

        googleCredAhmedabad = GoogleCredential.fromStream(is);

        scopedAhmedabad = googleCredAhmedabad.createScoped(
                Arrays.asList(
                        "https://www.googleapis.com/auth/firebase.database",
                        "https://www.googleapis.com/auth/userinfo.email"
                        )
                );

        scopedAhmedabad.refreshToken();

        String myToken = scopedAhmedabad.getAccessToken();
(使用服务帐户生成具有足够作用域的凭据)经过身份验证的REST API是否调用trump安全规则?

在以下内容中提到:

auth request参数允许访问受Firebase保护的数据 实时数据库规则,并受所有请求类型的支持。这个 参数可以是Firebase应用程序机密或身份验证 令牌,我们将在用户授权部分介绍


我看到您提到您正在使用经过身份验证的RESTAPI,所以我假设您确实设置了auth参数。这意味着你是对的:安全规则不适用于经过身份验证的REST API。

可能安全规则只适用于他们的客户端(android和ios)和web端sdksYep,正如预测的那样,刚刚在没有auth令牌的情况下测试过的sdksYep不起作用。我猜使用服务帐户创建的默认凭据提供了与adminsdk类似的完全管理员权限。与adminsdk不同的是,没有覆盖auth的可能:)不知何故在文档中遗漏了这一部分,谢谢:)