在 Firebase 实时数据库上强制执行 AppCheck 无效

问题描述

我有一个网页,它使用以下 javascript 代码从实时数据库接收数据:

firebase.initializeApp(fbConfig);
firebase.appCheck().activate('6LdKHhMbAAAAAHeIcmY17pO7tccNzVcT6OkyvOPr');

firebase.database().ref('/Feed').on('value',(snapshot) => {
  console.log(snapshot.val());
}

对配置了 reCAPTCHA 的实时数据库强制执行 AppCheck。但即使没有 appCheck().activate() 行,页面也能够接收数据。应用检查功能似乎没有影响。

目的应该是只有真实(匿名)用户,具有良好的 reCAPTCHA 分数才能接收数据。

知道这里缺少什么。我预计,如果未使用正确的共享代码激活,则一旦强制执行 App Check,该页面无法获取数据。但这里似乎缺少了一些东西。对于这个只读应用程序,没有令牌(来自 grecaptcha.execute())以某种方式发送到我的服务器,没有请求发送到我的服务器上,就像提交表单一样。 Firebase 似乎没有设置来控制需要哪些 reCAPTCHA 评级。

解决方法

firebaser 在这里

由于我们需要您提供更多信息以帮助您调试此问题,您能否直接reach out to Firebase support获得个性化的故障排除帮助?然后,您可以报告您的案例 ID,以便我查看。

[编辑:感谢您向我们提交此案。我在下面添加了答案。]

根本原因是您的 RTDB 实例位于非美国位置。目前,App Check 不支持此功能,但我们很快就会为非美国 RTDB 实例添加 App Check 支持。我会在此处发帖让人们知道何时支持此功能。

[第二次编辑:我们计划在下周,即 2021-06-21 周发布对非美国 RTDB 实例的 App Check 支持。请继续关注下周的另一个更新。]

最终编辑:App Check 现在支持非美国 RTDB 实例。它现在应该对你有用。感谢您提醒我们注意!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...