Flutter应用发布至Play Store后Firebase认证、谷歌登录及OTP功能失效报错
集成Firebase Authentication与谷歌登录功能的Flutter应用发布到Play Store后,OTP验证、谷歌登录功能均无法正常使用,本地直接运行安装到测试设备时所有功能正常。
系统抛出错误如下:
The app is not authorized to use Firebase Authentication. Please verify that the correct package name and SHA-1 are configured in the Firebase Console.[A safety net token was passed, but no matching SHA-256 was registered in the Firebase console. Please make sure that this application's package Name or SHA256 pair is registered in the Firebase Console.]
错误截图:
- 项目内已配置
key.jks与key.properties文件,生成发布密钥的命令为:
keytool -genkey -v -keystore c:\Users\hp\key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
- 已执行命令获取debug签名的SHA1、SHA-256值:
keytool -list -v -alias androiddebugkey -keystore C:\Users\hp\.android\debug.keystore
- 已将上述获取到的SHA1、SHA256值在Firebase控制台完成注册
- 已在Firebase Authentication模块开启Phone手机号验证、Google Sign In谷歌登录提供商
你只添加了本地debug签名、本地上传密钥的签名指纹到Firebase,但如果开启了Google Play应用签名功能(Play上架默认强制开启),你上传的AAB/APK会被Google用平台托管的应用签名密钥重新签名后才会分发给用户,最终线上安装包的签名指纹和你之前登记的不匹配,就会触发这个授权错误。
- 获取Google Play托管的应用签名密钥指纹
登录Google Play Console,进入对应应用页面,依次打开「设置」-「应用完整性」,复制「应用签名密钥」板块下的SHA-1、SHA-256值(注意不要复制上传密钥的指纹,上传密钥仅用于你向Play提交包时的校验,不用于最终分发的安装包签名) - 补充指纹到Firebase控制台
打开Firebase控制台,进入对应项目的「项目设置」-「常规」页,找到你的Android应用条目,把上一步复制的SHA-1、SHA-256添加到签名指纹列表中,保存配置 - 更新项目配置文件
在Firebase控制台重新下载最新的google-services.json文件,替换Flutter项目中android/app/目录下的旧配置文件 - 重新打包提交新版本到Play Store,版本上线后功能即可恢复正常
如果后续需要做本地release包测试,也要把你自己生成的上传密钥(即你本地生成的key.jks)的SHA-1、SHA-256添加到Firebase指纹列表,否则本地打release包直装时也会出现同样的授权错误。
内容的提问来源于stack exchange,提问作者sr2k23

