原因:因为App上传到Google Play后,Google Play 有个签名的选择,默认是选择Google Play 的二次签名(Play App Signing),所以在开发过程中使用本地的签名文件生成的MD5值和在Key Hashes值就无效了。基于这种情况,一般两种解决方案,Google Play 也给了很明确的说明:
一. 将本地的签名更改成Google Play 提供的签名,好处是本地和Google play 线上的统一,方便以后管理,缺点是:之前默认Google 签名的老项目不太好更改了
二. 兼容Google Play的签名,获取到Google Play 的签名文件的MD5和Key Hashes,然后填入对应的三方平台
本文重点讲解选择了方式二的处理步骤:
1.登录Google Play console 后台: https://play.google.com/console/u/0/developers
选择对应的项目---->进入到具体APP Project 管理中 -------->选择左侧的:Setup--->App integrity-->APP signing ----->找到签名证书:App signing key certificate ---->Download certificate
如果是中文步骤:Google Play Cosole -> Your App -> 设置 -> 应用完整性 -> 应用签名密钥证书 -> 下载证书,得到证书文件deployment_cert.der
2.然后把证书加到原本地应用签名文件jks或keystore文件内
keytool -import -file [Google Play下载的deployment_cert.der路径] -keystore [本地应用jks或keystore文件路径] 这样就得到了一个新的签名文件
3.获取新增的别名信息YOUR_RELEASE_KEY_PATH为本地修改后的jks文件路径,获取到的新别名应该为mykey还有新的MD5值
keytool -list -v -keystore YOUR_RELEASE_KEY_PATH
4.完成步骤三就可以将新的签名文件的MD5 SHA1上传到Firbase 后台 https://console.firebase.google.com/ Project Overview--->Setting ---->Project settings ---->General---->添加新的SHA1和SHA-256
到目前为止,Google login 的问题解决了,测试下Google login success了
5.Facebook 登录需要签名文件的Key Hashes :
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
(YOUR_RELEASE_KEY_ALIAS为步骤3获取到的别名,YOUR_RELEASE_KEY_PATH 为修改后新的签名文件路径,此命令将会获取到一串签名信息,例如 FjYHteIcO+brSk3p8H7WKXA9PNk=
6.将获取到的 FjYHteIcO+brSk3p8H7WKXA9PNk= 复制到Facebook 开发者后台https://developers.facebook.com/apps并保存。此时Facebook login success