官方提供的方法如下:
/**
* 根据签名文件获取散列密钥
* 注意: 如果debug和release签名文件不一致,需要重新生成配置到Facebook
*/
public static String getHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
LogUtils.e("HashKey:", KeyHash);// 打印出来的HashKey就是秘钥散列
return KeyHash;
}
} catch (Exception e) {
return "get error";
}
return null;
}
顺便提一下app被google play二次签名后,怎么去更新散列密钥
1. 在google控制台找到签名项,下载二次签名后的==deployment_cert.der==文件
2. 使用命令,用.der生成.jks签名,生成过程中会让输入两次密码,原本是没有密码的,默认别名是==mykey==
```keytool -import -file deployment_cert.der -keystore deployment_cert.jks```
3. 使用Facebook提供的命令生成散列密钥,如果上面```getHashKey```方法不方便使用,用这个命令也是可以的
```keytool -exportcert -keystore deployment_cert.jks | openssl sha1 -binary | openssl base64```
生成的散列密钥如下所示:WCR2jgac3L5g6HmWD/c5vtpYhpI=