Facebook Android Generate Key Hash
Пытаясь создать приложение для Android с интеграцией с Facebook, я получил роль в документах, где вам нужно сгенерировать хэш файл ключа, он указывает на запуск следующего кода
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
| openssl sha1 -binary
| openssl base64
Когда я запускаю это в своем терминале, я получаю сообщение об ошибке, вызванном неправильной настройкой Keystore или неверным паролем,
Я просто хочу сгенерировать свой хэш ключей
Может ли кто-нибудь указать мне в правильном направлении?
Ответы
Ответ 1
Удалите сертификат отладки в ~/.android/debug.keystore(в Linux и Mac OS X); в каталоге что-то вроде% USERHOME%/. android в Windows.
Плагин Eclipse должен затем сгенерировать новый сертификат, когда вы попытаетесь создать пакет отладки.
Сообщите мне, если это работает.
Ответ 2
Для генерации ключевого хеша вам нужно выполнить несколько простых шагов.
1) Скачать Openssl от: здесь.
2) Создайте папку openssl в C диске
3) Извлеките файлы Zip в эту папку openssl, созданную в C Диске.
4) Скопируйте файл debug.keystore из .android в мой случай (C:\Users\SYSTEM.android) и вставьте в папку JDK bin в моем case (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) Теперь вам нужно ввести пароль, пароль = андроид.
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. Вот ваш хэш ключа.
Ответ 3
ОБНОВЛЕННЫЙ ОТВЕТ (Создание через код) Упрощенный метод:
По моему опыту, opensl всегда был хлопотным, я попробовал второй метод, предложенный facebook. И это замечательно. Это лучший способ получить хэш-ключ.
Второй вариант заключается в том, чтобы распечатать хеш-ключ, отправленный на Facebook, и использовать это значение. Внесите следующие изменения в метод onCreate() в вашем основном действии:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
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) {
} catch (NoSuchAlgorithmException e) {
}
...other operations
}//end of onCreate
Замените com.facebook.samples.loginhowto своим собственным именем пакета (имя пакета в Manifest.xml).
Официальная ссылка - https://developers.facebook.com/docs/android/login-with-facebook/ (см. нижнюю часть страницы)
OLD ANSWER (Генерирование Keyhash с помощью openssl)
- Чтобы создать подпись, вам необходимо открыть openssl на вашем компьютере. Если у вас нет одной загрузки openssl отсюда
- В папке C:, Создать
openssl
- извлеките содержимое загруженного zip файла openssl в папку
openssl
в папке C:
- открыть командную строку
- перейдите в
bin
из openssl
i.e C:\openssl\bin
в командной строке
-
выполните следующую команду для генерации вашей клавиатуры. При генерации hashkey он должен задать вам пароль.
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64
ПРИМЕЧАНИЕ: в приведенном выше коде обратите внимание, что вам нужно указать свой путь к пользователю (т.е. в моем случае это C:\Users\Anhsirk, вам просто нужно изменить его для своего пользователя учетной записи.
Дайте пароль как андроид
. Если он не запрашивает пароль, ваш путь к хранилищу ключей неверен.
Если все работает нормально, оно должно дать вам hashkey ниже.
Ответ 4
Правую клавишу можно получить из самого приложения, добавив следующий код, чтобы подтолкнуть правильный хэш ключа (в случае с Facebook SDK 3.0 и далее это работает)
try {
PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Замените com.package.mypackage на имя вашего пакета
Ответ 5
I. Создать ключевую хэш-отладку для facebook
Добавить код, чтобы распечатать хэш ключа для facebook
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.google.shoppingvn", PackageManager.GET_SIGNATURES);
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) {
}
II. Создать ключевой хеш-релиз для facebook
- Загрузить openssl-0.9.8e_X64
- Сделать папку openssl на диске C.
- Извлечь Zip файлы в папку openssl
- Пуск → Выполнить: cmd (нажмите ввод)
- (нажмите) cd C:\Program Files\Java\jdk1.6.0_45\bin. Примечание: C:\Program Files\Java\jdk1.6.0_45\bin: путь к папке jdk на вашем компьютере.
-
(нажмите) keytool -exportcert -alias gci -keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1 -binary | C:\openssl\bin\openssl base64. Примечание: D:\folder\keystorerelease: это путь к вашему keystorerelease
-
Введите пароль хранилища ключей: это пароль, когда вы регистрируете keystorerelease.
Тогда у вас будет хеш-ключ: jDehABCDIQEDWAYz5Ow4sjsxLSw =
-
Войдите в facebook. Доступ к управлению приложениями. Вставьте ключ-хэш в свое приложение на developers.facebook.com
Ответ 6
ПРОСТОЕ РЕШЕНИЕ ИЗ ЭТОЙ ПРОБЛЕМЫ:
У меня была эта проблема уже два месяца. Мое ключевое хеширование составило до 9. Сегодня я наконец нашел простое решение:
ШАГ 1:
Установите загружаемую вами фразу facebook, которую вы загрузили со страницы разработчика facebook на своем телефоне. Не устанавливайте обычное приложение facebook. Убедитесь, что вы можете войти в facebook. Затем выйдите из системы.
ШАГ 2:
Экспортируйте приложение с помощью ключа окончательной версии как apk, как если бы вы загрузили его в игровой магазин.
ШАГ 3:
Поместите файл Apk на свой телефон через USB-кабель или USB-палку.
ШАГ 4:
Установите приложение, используя диспетчер файлов: Пример
ШАГ 5:
Запустите приложение и попробуйте войти в систему с помощью facebook. Откроется диалоговое окно и скажет: "ключ YOURHASHKEY не найден в консоли разработчика facebook"
ШАГ 6:
Запишите ключ.
ШАГ 7:
Поместите его в консоль разработчика facebook и сохраните. Теперь все готово. Любой, загружающий ваше приложение, опубликованное с ранее использованным хранилищем ключей, может войти в facebook.
Enjoy
Ответ 7
Если вы выпускаете, используйте хранилище ключей, которое вы использовали для экспорта своего приложения, а не файл debug.keystore.
Ответ 8
Пароль сертификата отладки - это Android, а не Android
Ответ 9
Наконец:)
Вот моя история:
-
Добавьте этот код в свою основную деятельность после установки макета.
try {
PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
//textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
//textInstructionsOrLink.setText(sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
Log.d("nope","nope");
} catch (NoSuchAlgorithmException e) {
}
-
Измените имя PROJECTNAME на имя вашего пакета!
- Подпишите свое приложение (Android Tools- > Export Signed Application)
- В вашем основном действии, где вы вставляете код из 2, в вашем макете создайте TextView с идентификатором textstring
- раскомментируйте две строки, чтобы ваш код знака был установлен в TextView
6 Wuolia, у вас есть HASH, установите приложение на свой телефон!!! и проверьте свой хэш-ключ!
- Теперь, когда это видно, зайдите в приложение facebook, которое вы создали, и добавьте его в [Хеши для ключей]
- Обратите внимание, что ваше имя пакета должно быть таким же, как на facebook [Имя пакета] в разделе [Хеши хэша]
- Хороший день:)
Ответ 10
Однострочное решение для генерации для facebook
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Ответ 11
Чтобы генерировать хэширование ключа релиза, вам нужно выполнить несколько простых шагов.
1) Загрузите Openssl
2) Создайте папку openssl на диске C.
3) Извлеките файлы Zip в эту папку openssl, созданную на диске C.
4) Скопируйте файл debug.keystore из папки .android в моем случае (C:\Users\SYSTEM.android) и вставьте в папку JDK bin Folder в моем случае (C:\Program Files\Java\jdk1.6.0_05\BIN)
5) Откройте командную строку и укажите путь к папке JDK Bin в моем случае (C:\Program Files\Java\jdk1.7.0_40\bin).
6) Скопируйте следующий код и нажмите enter
keytool -exportcert -alias abcd-keystore D:\Projects\MyAppFolder\keystore.txt | C:\openssl\bin\openssl sha1 - бинарный | C:\openssl\bin\openssl base64
ex - keytool -exportcert -alias (ваш псевдоним псевдонима пек введите здесь, как мой знак apk alian name is abcd) -keystore "подписанный apk сгенерированный keystore apth enter here" | msgstr "путь к папке openssl bin входит сюда" sha1 - binary | "путь к папке openssl bin введите здесь" base64
7) Теперь вам нужно ввести пароль, Пароль = (введите здесь свой пароль для хранения ключей)
8) у вас есть хранилище ключей, которое используется для выпуска хэша ключа приложения
Ответ 12
Хотя эта ветка устарела, но я хотел бы поделиться своим опытом (недавно начал работать с facebook), который мне кажется прямо:
- Скачать openssl со ссылкой ниже:
https://code.google.com/p/openssl-for-windows/downloads/list
- Распакуйте его на локальный диск (например, C:\openssl)
-
Чтобы получить ключ разработки для интеграции facebook, используйте следующую команду из командной строки в окнах:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH%.android\debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64
ПРИМЕЧАНИЕ!: замените путь для openssl.exe(в этом примере это "C:\openssl\bin\openssl.exe" ) с вашим собственным путем установки.
- Будет запрошен пароль, например,
Введите пароль хранилища ключей: android
Введите android как пароль, как показано выше.
Вот оно! Вам будет предоставлен 28-значный длинный ключ. Ура!
Используйте ту же процедуру, чтобы получить ключ Release. Просто замените команду следующим и используйте свой псевдоним ключа выпуска.
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "PATH FOR openssl.exe" sha1 -binary | openssl base64
Ответ 13
Отличная запись в блоге по теме
Извлечение хэш ключа из ключа .p12
- Откройте терминал или командную строку и перейдите туда, где находится ваш ключ .p12.
- Введите "keytool -v -list -keystore mycert.p12 -storetype pkcs12", где mycert.p12 - это имя вашего ключа .p12.
- Введите пароль хранилища ключей (тот, который вы использовали при экспорте .p12).
4. Скопируйте текст байта сигнатуры отпечатка sha1.
- Для записи файла "sha1.bin" необходимы байты с сигнатурой отпечатка sha1. Вы можете использовать шестнадцатеричный редактор, чтобы вставить скопированные байты. Затем сохраните файл как "sha1.bin".
- Откройте терминал еще раз и введите: "openssl base64 -in sha1.bin -out base64.txt".
- В результате "base64.txt" будет содержать ключевое хеширование, которое необходимо для Facebook.
Великий и простой шестнадцатеричный редактор для mac: HexFiend
OpenSSL должен быть предварительно установлен на mac, и вот ссылка для версии Windows.
Ссылка
Ответ 14
Попробуйте передать пароль для ключа и сохранить как часть команды
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android \
| openssl sha1 -binary \
| openssl base64
Ответ 15
Мне удалось выполнить запрошенную задачу с некоторыми из решений здесь, но подумал про себя, мальчик, который глуп... почему бы не написать небольшой Java-код, который делает это, и упаковать его в Jar, поэтому Я сделал...
A ссылка для загрузки Jar
Работает в Windows 8... не пробовал другие ОС.
Ответ 16
Привет всем, моя история, как я подписался, имеет ключ для facebook
Прежде всего, вы просто скопируете эти 2 метода в свой первый класс
private void getAppKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
System.out.println("HASH " + something);
showSignedHashKey(something);
}
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
}
public void showSignedHashKey(String hashKey) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Note Signed Hash Key");
adb.setMessage(hashKey);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
adb.show();
}
** Вызвать funcation getAppKeyHash() из вашего метода oncreate, если вы хотите, чтобы подписанный хеш выполнял подписанную сборку, установить подписанную сборку и запустить, вы получите хеш-ключ в диалоговом окне, а затем просто отметьте его и обновите на учетной записи facebook dev и прокомментируете эту функцию и сделать еще один подписанный APK **
Ответ 17
Если ваш пароль = андроид не так, тогда поставьте свой пароль pc на то, что он работает для меня.
И для генерации keyHash попробуйте эту ссылку Здесь
Ответ 18
Сгенерировать отладочный хэш-ключ
public String hashkey(Context context) {
String keyhash = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 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));
keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
return keyhash;
}
Генерировать деблокированный ключ
keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
Ответ 19
Единственное, что работает для меня, - это пароль android
. Почему это не упоминается в каких-либо руководствах?
Ответ 20
используйте это в kotlin для печати ключа хэша в журнале
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
Ответ 21
Самый простой способ генерировать хеш-ключ.
Требование: ключ SHA1
Вы можете найти ключ SHA1, запустив signatureReport
Смотрите изображение ниже.
после запуска файла будет сгенерирован ваш вывод, содержащий требуемый ключ sha1.
Затем перейдите на http://tomeko.net/online_tools/hex_to_base64.php
и вставьте свой ключ sha1
и, наконец, вы получите обязательный HashKey.