我遇到有关使用debug.keystore生成Android KeyHash的问题,我不太了解。
我的理解是,如果我在PC上生成KeyHash,无论我如何生成它,都应该给我一个独特的keyhash。我可以带这个keyhash与Facebook SDK集成。
然而,我发现的是以下内容:
keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | openssl sha1 -binary | openssl base64 密码:android
我获得了以下keyHash:E3P3dslAkuReIuFQJC5oTlhkRrs =
为了生成密钥哈希,您需要执行一些简单的步骤。
1)从这里下载Openssl。
2)在C盘中制作一个openssl文件夹
3)将Zip文件解压缩到在C Drive中创建的这个openssl文件夹中。
4)从我的案例中的.android文件夹中复制File debug.keystore(C:\ Users \ SYSTEM.android)并粘贴到我的案例中的JDK bin文件夹(C:\ Program Files \ Java \ jdk1.6.0_05) \ bin)中
5)打开命令提示符并在我的情况下给出JDK Bin文件夹的路径(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)。
6)复制以下代码并按Enter键
keytool -exportcert -alias androiddebugkey -keystore debug.keystore> C:\ OpenSSL的\ BIN \ DEBUG.TXT
7)现在你需要输入密码,密码= android。
8)如果你在openssl Bin文件夹中看到,你将得到一个名为debug.txt的文件
9)现在要么可以重新启动命令提示符,要么使用现有的命令提示符
10)返回C盘并给出openssl Bin文件夹的路径
11)复制以下代码并粘贴
openssl sha1 -binary debug.txt> debug_sha.txt
12)你将在openssl bin文件夹中获得debug_sha.txt
13)再次复制以下代码并粘贴
openssl base64 -in debug_sha.txt> debug_base64.txt
14)你将在openssl bin文件夹中获得debug_base64.txt
15)打开debug_base64.txt文件这是你的密钥哈希。
密码:android
我获得了以下keyHash:zp + a + 1HT9jLTgob9Htw9EFrZatY =
这两种方法都是在相同的PC 和相同的debug.keystore 上生成的。他们为什么不一样? Aren他们应该是一样的吗?
另一个问题是我在不同手机上使用Android代码获得的KeyHash。我使用以下代码(再次在StackOverflow上找到):
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.loginfb", PackageManager.GET_SIGNATURES); //Your package name here
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
然后我用两部不同的手机查看了日志窗口,我发现了以下内容:
LG手机Android 2.3 12-09 09:22:51.832:I / KeyHash:(20572):NlsbfhmR2 / ZCXnpKNNsH + 0II8LM =三星手机Android 4.2.2 12-09 09:51:21.054:I / KeyHash:(20067):zp + a + 1HT9jLTgob9Htw9EFrZatY =
他们给了我不同的HashKeys。但是,其中一个(zp + a + 1HT9jLTgob9Htw9EFrZatY =)与上述第二种方法一致。
任何人都知道这里发生了什么?我很困惑很多次。
感谢您的回复。
答案 0 :(得分:0)
密钥哈希来自用于签署APK的密钥。
对于调试会话,使用默认的调试密钥。
通常,当您向公众发布应用时,您会使用其他密钥。因此密钥哈希是不同的。