You need to enable JavaScript to run this app. Play商店衍生构建版本中SMS Retriever API自动读取OTP失效求助
优惠活动
大模型
产品
解决方案
定价
更多

Play商店衍生构建版本中SMS Retriever API自动读取OTP失效求助

核心失效原因

你遇到的自动读OTP失效,本质是签名证书与计算哈希的证书不匹配:

  • 你自行构建的本地APK,使用本地部署签名完成签名,基于该证书算出的11位哈希可与本地APK的签名匹配,因此功能运行正常
  • 你此前基于deployment_cert.der生成的哈希,无法匹配Google Play渠道下发的衍生安装包:只要开启了Google Play应用签名机制,Play平台会用自身托管的专属应用签名证书,对你上传的APK重新签名后再分发给终端用户,这个重签名所用的证书与你本地的部署证书公钥完全不一致,SMS Retriever API校验签名哈希不通过,就会直接终止自动读取流程。
分步修复方案
  • 从Google Play控制台获取平台托管的正式应用签名证书:进入目标应用的「测试和发布-应用完整性-应用签名」板块,找到「应用签名证书」分类,导出该分类下的证书原始文件,注意不要误导出「上传证书」(也就是你本地用来上传安装包的deployment_cert.der)。
  • 使用刚导出的Google Play托管证书,重新生成SMS Retriever API要求的11位哈希值,参考生成命令:
    keytool -exportcert -alias androiddebugkey -keystore <托管证书文件路径> | xxd -p | tr -d "[:space:]" | echo -n $(cat /dev/stdin) " SALT" | openssl dgst -sha256 -binary | xxd -p | tr -d "[:space:]" | cut -c1-11
  • 将后端OTP短信模板中原先嵌入的旧11位哈希,替换为本次新生成的、基于Play托管签名的哈希值,短信格式需严格符合SMS Retriever API的规范,避免出现多余字符、漏空格的问题。
  • 验证环节必须使用Google Play内部测试轨道下发的、经过平台重签名的安装包做功能校验,不要用本地自行构建的安装包测试,确认自动读取OTP功能完全正常后,再推进全量发布。
高频踩坑提醒
  • 切勿混淆两类签名证书:开启Play应用签名后,「上传证书」仅用于校验你上传到Play平台的安装包的发布身份,「应用签名证书」才是最终下发给用户的安装包的实际生效签名,所有需要基于安装包签名计算的校验逻辑(包括SMS Retriever哈希、App Links验证、第三方SDK签名鉴权),都必须以后者为计算依据。
  • 哈希校验无大小写容错:生成的11位哈希是什么格式,就严格按原格式嵌入到短信内容中,大小写错一位都会直接触发校验失败。
  • 旧版本功能可正常运行的原因,通常是此前你上传安装包时使用的签名证书,与Play托管的应用签名证书是同一套;后续若重置过上传密钥、或重新开启过应用签名机制,两边证书不一致,就会导致功能突然失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 00:54:02