【发布时间】:2015-02-06 21:06:28
【问题描述】:
我有一个关于使用 debug.keystore 生成 Android KeyHash 的问题,我不太了解。
我的理解是,如果我在我的 PC 上生成一个 KeyHash,无论我如何生成它,它都应该给我一个唯一的 keyhash。我可以将这个 keyhash 用于与 Facebook SDK 集成。
但是,我发现如下:
- 我使用 Facebook 开发者页面上建议的以下命令行:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -二进制 | openssl base64 带密码:android
我得到了以下keyHash:E3P3dslAkuReIuFQJC5oTlhkRrs=
- 然后我使用我在 StackOverflow 上找到的以下方法:
为了生成密钥哈希,您需要遵循一些简单的步骤。
1) 从此处下载 Openssl。
2) 在C盘创建一个openssl文件夹
3) 将 Zip 文件解压到 C 盘创建的 openssl 文件夹中。
4) 在我的情况下从 .android 文件夹 (C:\Users\SYSTEM.android) 复制文件 debug.keystore 并在我的情况下粘贴到 JDK bin 文件夹中 (C:\Program Files\Java\jdk1.6.0_05 \bin)
5) 打开命令提示符并给出我的情况下 JDK Bin 文件夹的路径 (C:\Program Files\Java\jdk1.6.0_05\bin)。
6) 复制以下代码并回车
keytool -exportcert -alias androiddebugkey -keystore debug.keystore > c:\openssl\bin\debug.txt
7) 现在你需要输入密码,Password = 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。为什么他们不一样?他们不应该是一样的吗?
另一个问题是我在不同手机上使用 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=
三星手机安卓4.2.2 12-09 09:51:21.054: I/KeyHash:(20067): zp+a+1HT9jLTgob9Htw9EFrZatY=
他们给了我不同的哈希键。但是其中一个(zp+a+1HT9jLTgob9Htw9EFrZatY=)与上面的第二种方法是一致的。
有人知道这里发生了什么吗?我真的很困惑。
感谢您的回复。
【问题讨论】:
标签: android facebook android-keystore