You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Play Store发布版Facebook登录报Invalid key hash错误

问题原因

这是Facebook安卓登录的经典已知问题,和代码逻辑无关,核心是两个机制共同导致的:

  • 首先是Facebook登录的链路分流规则:设备安装了Facebook客户端时,登录流程默认走客户端原生SSO授权,这个环节是由Facebook App负责校验调用方应用的签名key hash;如果设备没有安装/禁用了Facebook App,登录会自动降级为内嵌WebView授权,这个链路不会校验本地安装包的签名hash,这就是为什么禁用Facebook应用后登录能正常跑通的原因。
  • 你加了报错提示的hash还是不生效,基本逃不开两个原因:
    1. 你拿到的hash本身是错的:Google Play会对上架应用做重签名,你本地生成的release key hash是基于自己的上传证书算的,但终端用户从Google Play装的包是被Google Play签名后的版本,实际签名hash和你本地算的不一样;另外Facebook客户端弹出的报错里的hash经常会有字符截断、编码错误,直接复制粘贴加进后台大概率是无效值。
    2. Facebook客户端有配置缓存:哪怕你在Meta后台加对了正确的hash,设备上装的Facebook App不会实时拉取最新的配置,会缓存之前的校验失败结果,短时间内测试还是会抛一模一样的错误。
解决步骤
  • 不要用本地打的上传包算hash,直接从Google Play下载你正式发布的最新版APK,解压后提取META-INF/ANDROID.RSA文件,执行命令keytool -printcert -file ANDROID.RSA拿到签名的SHA1值,再按照Facebook的规则转成base64格式的key hash,把这个值加到Meta开发者后台的安卓Key Hashes配置列表里。
  • 配置完成后先清理两边的缓存:强制停止设备上的Facebook App,清除它的所有存储缓存,再把你自己的测试应用卸载重装,之后再触发登录测试即可。
  • 记得把你应用用到的所有签名(debug签名、本地release签名、Google Play重签名)对应的hash都加到后台,避免不同安装渠道的包出问题。

内容的提问来源于stack exchange,提问作者Pierre Ehab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:27:16