给你一个眼神,自己体会

白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。

Facebook keyhash 获取(记谷歌签名计划带来的坑)

Facebook keyhash 获取(记谷歌签名计划带来的坑)

前段时间接入海外开发,游戏需要接入facebook登陆SDK,并上架谷歌商店,但是不小心加入了谷歌签名计划这个坑(建议大家不要加入,加入该计划之后,我们上传的apk,Google会使用它为你生成的jks重新签名,对于游戏本身的整包更新机制会游影响)。

导致的问题就是,由于谷歌商店会重签名,所以facebook登陆的时候就会提示hashkey不对,因为我们在facebook后台填写的是自己的签名的keyhash值,所以我们要加上谷歌重签名使用的签名key的keyhash

由于google play 推荐 发布签名证书(App签名证书)用google play后台生成的,而google play 后台生成我们可以看到的,直接是 签名证书(签名证书可以下载),而无法拿到google后台生成的 .keystore 文件,而facebook 获取 keyhash 官方给出了两个方法:

方法一:

由于google play 推荐 发布签名证书(App签名证书)用google play后台生成的,而google play 后台生成我们可以看到的,直接是 签名证书(签名证书可以下载),而无法拿到google后台生成的 .keystore 文件,而facebook 获取 keyhash 官方给出了两个方法:

private void facebookHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo(“your.package.name”, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance(“SHA”);
md.update(signature.toByteArray());
Log.d(“KeyHash:”, Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}


方法二:

作者:changcsw
来源:CSDN
原文:https://blog.csdn.net/changcsw/article/details/88720357
版权声明:本文为博主原创文章,转载请附上博文链接!

电脑上配置好openssl 环境 的前提下 执行命令

keytool -exportcert -aliasandroiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

无论方法一还是方法二都需要有 .keystore(或.jks) 文件的前提下才可获取,而使用 google play 后台生成的签名证书是拿不到 .keystore(或.jks) 文件,只能下载 .der文件的证书,所以无法通过Facebook官方给出的方法获取到 keyhash。

能不能通过 .der文件证书来生成 keyhash值能?答案: 能

方法如下:

     电脑上配置好openssl 环境 的前提下 执行命令

openssl sha1 -binary deployment_cert.der | openssl base64

说明:deployment_cert.der 为从google play 后台下载的 google play 用于发布的签名证书


zhou, guoshan