У меня возникла проблема с созданием Android KeyHash с помощью debug.keystore, которую я не совсем понимаю.
Я понимаю, что если я создаю KeyHash на своем ПК, независимо от того, как я его генерирую, он должен дать мне уникальный keyhash. И я могу принести этот keyhash для интеграции с Facebook SDK.
Однако я выяснил следующее:
- Я использую следующую командную строку, предложенную на странице разработчика Facebook:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binary | openssl base64 с паролем: android
И я получил следующий keyHash: E3P3dslAkuReIuFQJC5oTlhkRrs =
- Затем я использую следующий метод, который нашел в StackOverflow:
Чтобы сгенерировать ключевой хеш, вам нужно выполнить несколько простых шагов.
1) Загрузите Openssl отсюда.
2) Сделайте папку openssl на диске C
3) Распакуйте Zip-файлы в эту папку openssl, созданную на диске C.
4) Скопируйте файл debug.keystore из папки .android в моем случае (C: \ Users \ SYSTEM.android) и вставьте в папку bin JDK в моем случае (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) Теперь вам нужно ввести пароль, Password = android.
8) Если вы видите в папке openssl Bin, вы получите файл с именем debug.txt
9) Теперь вы можете либо перезапустить командную строку, либо работать с существующей командной строкой.
10) вернитесь на диск C и укажите путь к папке openssl Bin
11) скопируйте следующий код и вставьте
openssl sha1 -binary debug.txt> debug_sha.txt
12) вы получите debug_sha.txt в папке bin openssl
13) Снова скопируйте следующий код и вставьте
openssl base64 -in debug_sha.txt> debug_base64.txt
14) вы получите debug_base64.txt в папке bin openssl
15) откройте файл debug_base64.txt Вот ваш хэш ключа.
с паролем: android
И я получил следующий keyHash: zp + a + 1HT9jLTgob9Htw9EFrZatY =
Оба эти метода создаются на одном компьютере и с одним и тем же хранилищем ключей debug.keystore. Почему они не такие? Разве они не должны быть одинаковыми?
Еще одна проблема - KeyHash, который я получил с помощью кода Android на разных телефонах. Я использую следующий код (снова найденный в 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 =
Телефон Samsung Android 4.2.2 12-09 09: 51: 21.054: I / KeyHash: (20067): zp + a + 1HT9jLTgob9Htw9EFrZatY =
Они дали мне разные HashKey. Однако один из них (zp + a + 1HT9jLTgob9Htw9EFrZatY =) совместим со вторым методом, описанным выше.
Кто-нибудь знает, что здесь происходит? Я действительно несколько раз сбит с толку.
Спасибо за любой ответ.