Flutter Firebase需配置哪些签名?发布版Firestore权限拒斥排查
签名配置说明
- Debug调试环境:仅需配置
debug.keystore的SHA-1和SHA-256,用于本地开发调试。 - 发布环境(Google Play分发):
- 核心必填:谷歌控制台应用签名密钥证书的SHA-1和SHA-256,这是Play商店分发应用时实际使用的签名,必须配置。
- upload-keystore签名:仅当你需要跳过Play商店,用upload密钥直接签名APK/AAB并手动分发时才需要配置,正常走Play官方分发流程的话可以删除。
- 最终保留配置:debug密钥的两个SHA值 + Play应用签名密钥的两个SHA值即可。
权限拒斥问题解决步骤
1. 校验App Check发布版配置
- 在Firebase控制台的App Check页面,确保Android应用已启用Play Integrity提供者,且关联了正确的Google Play项目。
- 登录Google Play控制台,在「API权限」中确认Play Integrity API已启用(若未启用需手动开启)。
2. 验证用户认证有效性
- 发布版中,务必确认用户已完成登录流程,且当前登录用户的邮箱与Firestore规则
datalist中的邮箱完全一致。可以在代码中添加日志打印当前用户的email值,排查是否存在拼写错误或未登录情况。 - 注意:若使用匿名登录、手机号登录等无邮箱关联的认证方式,
request.auth.token.email会为null,直接触发权限拒绝,需确保登录方式能提供有效邮箱。
3. 分步排查权限规则
- 临时修改Firestore规则进行调试(调试完成后务必改回原有规则):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if isAuth() || request.app != null; } } }- 如果修改后能正常写入:说明App Check配置存在问题,需重新检查Play Integrity的启用状态和项目关联。
- 如果仍无法写入:说明用户认证环节有问题,需排查登录流程是否正常完成、用户邮箱是否匹配规则。
4. 确认项目配置一致性
- 确保Flutter项目中使用的
google-services.json是从当前Firebase项目下载的最新版本,文件中已包含Play应用签名的SHA值。 - 发布版的APK/AAB必须使用
upload-keystore签名后再上传到Play商店,禁止用debug密钥签名发布包。
内容的提问来源于stack exchange,提问作者enchance
相关产品推荐
相关产品推荐

