在开发过程中,我遇到了相同的问题,需要获取哈希键来测试在Facebook上的共享,在解决此问题时,我经历了几个问题
1- Facebook提供的通过使用openSSL命令获取哈希密钥的命令没有给我正确的哈希,该哈希是我从带有代码的Package info中提取签名所获得的。通过第二种方式获取哈希是正确的。
2-由于某种原因,在文档中,他们告诉您进入开发人员设置并在其中添加“示例应用程序”的哈希键,我以为开发人员的每个哈希键都应该存在,那是我的错误,每个应用程序都有它要添加的自己的哈希键字段,请转到您的app / settings / android。
好吧..对于我在Windows 7 x64位上使用openssl-0.9.8k_X64的记录,它只是生成了错误的哈希,我不知道为什么
我使用以下代码获取哈希值:
private void printKeyHash() {
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) {
Log.e("KeyHash:", e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", e.toString());
}
}
但请注意,在调试时,至少在我的设备和机器上,这也可能无法在日志中打印出正确的哈希值,在手表中,它在打印日志之前就显示了正确的哈希值,但是在日志中却显示了另一个哈希值,并且第一个是正确的。
无论如何,您也可以使用命令或日食查看密钥的SHA十六进制序列并将其在线转换为以64为基数,有些网站可能会有所帮助
http://tomeko.net/online_tools/hex_to_base64.php?lang=en
祝好运