Ответ 1
Пришел и к этой проблеме, для меня я использовал windows powershell и продолжал генерировать 32-символьный ключ. Когда я переключаюсь на простой старый cmd, он работал, как ожидалось.
Я использую следующую команду для генерации ключевого хэша для консоли Facebook для Android
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
Как сказано в Facebook разработчикам SDK help
В соответствии с страницей справки, а также консолью разработчиков хеш-ключ должен содержать 28 символов, однако keytool генерирует 32-символьный длинный ключ.
Версия Java: jdk1.8.0_31 ОС: Windows 7
Генерация для android.
ИЗМЕНИТЬ
В соответствии с предложением от @Shreyash-mashru я использовал следующий код, чтобы получить keyhash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"my.package.name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
}
Однако, если кто-то еще может помочь мне понять, почему инструмент командной строки генерирует 32 char хэша с длинными ключами вместо 28...
Пришел и к этой проблеме, для меня я использовал windows powershell и продолжал генерировать 32-символьный ключ. Когда я переключаюсь на простой старый cmd, он работал, как ожидалось.
Сгенерированный хеш составляет 32 символа, потому что есть возврат каретки и новая строка, добавленная в конец. Чтобы это исправить, вы можете:
Удалите последние 5 символов хеша и добавьте "="
в конец. Например: "1234567890abcdefghijklmnopqrstuv"
(32 символа) → "1234567890abcdefghijklmnopq="
(28 символов)
Или же:
откройте консоль javascript и используйте:
btoa(atob("your hash string").slice(0, -2))
Где "your hash string"
- это ваш хэш из 32 символов.
У меня была такая же проблема. Это как-то связано с использованием моей существующей версии openSSL (64 бит). Я загрузил 32-битную версию отсюда и установил ее в c:\openSSL. Затем команда указывает на эту версию SSL, и я получил хэш 28-х символов.
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME.android\debug.keystore" | "C:\OpenSSL\Bin\OpenSSL" sha1 -binary | "C:\OpenSSL\bin\openssl" base64
ПОПРОБУЙТЕ КОМАНДУ В КОМАНДУ ПОДСКАЖИТЕ!
он спросит у вас пароль, затем вы получите хеш-ключ
Попытка использовать ту же команду на powershell не дает правильного ключа хеша.
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
это отлично работает для меня. повторите попытку.