繁体   English   中英

Firebase 应用程序检查拒绝 Android 中 Firestore 的所有查询

[英]Firebase App check denied all queries for Firestore in Android

遵循此处的教程,但是当 firebase 应用程序检查被强制执行时,所有查询都被拒绝

W/FirebaseProfileService:使用 com.google.firebase.firestore.FirebaseFirestoreException 失败:PERMISSION_DENIED:权限缺失或不足。

我已经在主要活动中运行了应用程序检查,它没有产生任何错误。

fun appCheck(){
    FirebaseApp.initializeApp(this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance()
    )
}

我还可以在日志中看到请求令牌。

I/PlayCore: UID: [] PID: [] IntegrityService: requestIntegrityToken(IntegrityTokenRequest{nonce=*****

I/PlayCore:UID:[] PID:[] IntegrityService:启动与服务的绑定。

I/PlayCore: UID: [] PID: [] IntegrityService: ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.integrityservice.IntegrityService})

I/PlayCore:UID:[] PID:[] IntegrityService:linkToDeath

W / Firestore:(24.1.2)[Firestore]:**********失败:状态{code = PERMISSION_DENIED,描述=缺少或权限不足。,原因= null}

出于隐私原因,“***”数据已被省略

有没有办法检查 AppCheck 或 PlayIntegrity 错误? 云监控似乎只监控云功能。 如前所述,当不强制执行 AppCheck 时,所有查询和 Firestore 规则都可以正常工作。

除了将版本上传到 Play 商店控制台之外,似乎也没有提到在哪里指定应用程序的最新版本。 我是否必须为 AppCheck 上传版本才能允许 Firestore 查询?

编辑:我倾向于这是 IAM 角色的问题。

这是我从 Firebase 支持得到的答案。 显然,应用程序必须在应用程序检查与播放完整性一起工作之前发布。 我与firebase的聊天:

是的,必须在 Google Play 商店中发布应用程序,才能获得有效的 SHA-256 指纹,然后开始验证 PlayIntegrity 的请求。 您可以查看此参考。

在您的情况下,如果应用程序仍在开发或持续集成中,最好在模拟器中使用调试令牌。

检查你的随机数是否太短。

在 nonce 字段中设置的值必须格式正确:

String
URL-safe
Encoded as Base64 and non-wrapping
Minimum of 16 characters
Maximum of 500 characters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM