由于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) {
}
}
方法二:
电脑上配置好openssl 环境 的前提下 执行命令
keytool -exportcert -alias androiddebugkey -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 用于发布的签名证书