Я вообще не понимаю этот процесс. Я смог перейти к папке, содержащей keytool в Java SDK. Хотя я продолжаю получать ошибку openssl не распознается как внутренняя или внешняя команда. Проблема даже в том, что я могу заставить это работать, что бы я сделал и с чем потом?
Как создать Android-хэши Facebook Facebook?
Ответ 1
Вот что вам нужно сделать -
Скачайте openSSl из Code Извлеките его. создайте папку OpenSSL в C:/и скопируйте извлеченный код здесь.
определить путь к файлу debug.keystore. Если u не нашел, выполните поиск в C:/и используйте Путь в команде на следующем шаге.
определите путь keytool.exe и перейдите в командную строку dir/in и запустите эту команду в 1 строке -
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
он будет запрашивать пароль, поставить андроид все это. u получит ключ-хэш
Ответ 2
Для Linux и Mac
Открытый терминал:
Для отладки сборки
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
Вы найдете debug.keystore в папке ".android". Скопируйте его и вставьте на рабочий стол и выполните приведенную выше команду.
Для выпуска Build
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
ПРИМЕЧАНИЕ. Убедитесь, что в обоих случаях запрашивается пароль. Если он не запрашивает пароль, это означает, что в команде что-то не так. Пароль для debug.keystore - " android ", а для выпуска вы должны ввести пароль, который вы установили при создании хранилища ключей.
Ответ 3
Пожалуйста, попробуйте это:
public static void printHashKey(Context pContext) {
try {
PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
}
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "printHashKey()", e);
} catch (Exception e) {
Log.e(TAG, "printHashKey()", e);
}
}
Ответ 4
OpenSSL: вы должны установить это, если он не поставляется с предустановленной операционной системой (например, Windows не имеет предустановленной). Как установить это зависит от вашей ОС (для Windows проверьте ссылку предоставленную coder_For_Life22).
Самый простой способ без возиться - это копирование бинарного файла openssl.exe на ваш путь keytool, если вы находитесь в Windows. Если вы не хотите этого делать, вы должны добавить его в переменную среды PATH
. Затем выполните команду, предоставленную в документах.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Обратите внимание, что аргумент после -keystore
указывает на ваше хранилище отладки. Это местоположение также зависит от вашей операционной системы. Должно быть в одном из следующих мест:
- Windows Vista или 7 - C:\Users \.android\debug.keystore
- Windows XP - C:\Documents and Settings \.android\debug.keystore
- OS X и Linux - ~/.android/debug.keystore
Если вы все сделали правильно, вам будет предложено ввести пароль. Это значение android
для сертификата отладки. Если пароль правильный, консоль печатает хеш (несколько случайных символов и цифр).
Возьмите это и скопируйте его в поле android key hash
внутри настроек вашего приложения на facebook. Чтобы добраться туда, перейдите в developers.facebook.com/apps, выберите свое приложение, перейдите к Edit settings
и прокрутите вниз. После этого подождите несколько минут, пока изменения не вступят в силу.
Ответ 5
чтобы сгенерировать хэш на вашем локальном компьютере, запустите утилиту Java keytool (которая должна находиться на вашем консольном пути) против хранилища отладки Android. Это по умолчанию находится в вашем домашнем каталоге .android). На OS X запустите:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
В Windows используйте: -
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
надеюсь, что это поможет вам
Ref - сайт разработчика facebook
Ответ 6
Есть и короткое решение. Просто запустите это в вашем приложении:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));
Более длинный, который не нуждается в FB SDK (на основе решения здесь):
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
Результат должен заканчиваться на "=".
Ответ 7
Для таких, как я, здесь есть полная информация (для Windows)
1. Загрузите OpenSSL 3-го или 4-го (с e будет работать лучше) на основе 32-битной или 64-битной системы.
2. Извлеките загруженный zip в директорию C
3. Откройте извлеченную папку до bin и скопируйте путь, это должно быть что-то вроде C:\openssl-0.9.8k_X64\bin\openssl
(add\openssl в конце)
4. (Получить путь к папке bin Jdk, если вы знаете, как игнорировать это).
Откройте android studio ~ файл ~ Структура проекта (ctrl + alt + shift + s), выберите местоположение SDK на левой боковой панели, скопируйте местоположение JDK и добавьте /bin в него
Таким образом, окончательное расположение JDK будет выглядеть как C:\Program Files\Android\Android Studio\jre\bin
мы следуем этому методу, чтобы получить местоположение JDK, потому что вы можете использовать встроенный JDK, как я
теперь у вас есть местоположение OpenSSl и местоположение JDK
5. теперь нам нужно местоположение хранилища ключей отладки, для этого откройте C ~> Users ~> YourUserName ~>.android, там должно быть имя файла debug.keystore, теперь скопируйте путь, это должно быть что-то вроде
C:\Users\Redman\.android\debug.keystore
6. Теперь откройте командную строку и введите команду
cd YourJDKLocationFromStep4
в моем случае
cd "C:\Program Files\Android\Android Studio\jre\bin"
7. Теперь создайте следующую команду
keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
в моем случае команда будет выглядеть
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
Теперь введите эту команду в командной строке, если вы все сделали правильно, вам будет предложено ввести пароль (пароль Android)
Enter keystore password: android
вот вам, вам будет дан ключ хэш, просто скопируйте его и используйте его
Для подписанного KeyHash построить следующую команду
keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
введите пароль хранилища ключей. Если вы введете неправильный пароль, он выдаст неверный ключ
НОТА
Если по какой-либо причине, если она дает ошибку по какому-то пути, оберните этот путь в двойные кавычки. Также оболочка питания Windows не работала хорошо для меня, я использовал git bash (или использовал командную строку).
пример
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
Ответ 8
Для Windows:
- откройте командную строку и вставьте ниже команду
keytool -exportcert -alias androiddebugkey -keystore % HOMEPATH%.android\debug.keystore | openssl sha1 -binary | OpenSSL base64
-
Введите пароль: android → Нажмите Enter
-
Скопировать сгенерированный хэш-ключ → Войти в Facebook с учетной записью разработчика
-
Перейдите в свое приложение Facebook → Настройки → Вставить хэш-ключ в опции "хэши-ключи" → сохранить изменения.
-
Теперь протестируйте свое приложение для Android с помощью Facebook Log-in/Share и т.д.
Ответ 9
Что я получил:
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (exception != null) {
new AlertDialog.Builder(FriendActivity.this)
.setTitle(R.string.login_failed_dialog_title)
.setMessage(exception.getMessage())
.setPositiveButton(R.string.ok_button, null)
.show();
}
Поэтому, когда вы пытаетесь войти без ключа, произойдет исключение. Facebook помещает ключ RIGHT в это исключение. Все, что вам нужно сделать, это скопировать его.
Ответ 10
Начиная с API 26, вы можете генерировать ваши HASH KEYS, используя следующий код в KOTLIN, без необходимости использования Facebook SDK.
fun generateSSHKey(context: Context){
try {
val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.getEncoder().encode(md.digest()))
Log.i("AppLog", "key:$hashKey=")
}
} catch (e: Exception) {
Log.e("AppLog", "error:", e)
}
}
Ответ 11
Для легкой учебной ссылки vedio для генерации KeyHash Здесь
Скачайте openssl ЗДЕСЬ
Ответ 12
Затем добавьте openssl\bin к системным переменным пути:
Мой компьютер → свойства → Расширенные конфигурации → Дополнительно → Системные переменные → под системными переменными находят путь и добавляют это к его концам: ; YourFullOpenSSLDir\Bin
Теперь откройте командную строку в папке jdk\bin C:\Program Files\Java\jdk1.8.0_40\bin (в Windows удерживайте shift и щелкните правой кнопкой мыши → откройте командную строку здесь) и используйте:
keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64
И скопируйте 28-значный номер, который он генерирует после предоставления пароля.
Ответ 13
Запустите это в своем приложении:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");
Или это:
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
А потом посмотрите на логи.
Результат должен заканчиваться на "=".
Ответ 14
Вы можете просто использовать однострочный JavaScript в консоли браузера, чтобы преобразовать шестнадцатеричный ключ карты в base64. Откройте консоль в последнем браузере (F12 в Windows), вставьте код и замените шестнадцатеричную карту SHA-1
, SHA-256
которую Google play предоставляет в разделе Release Managment
> App signing
:
> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
Ответ 15
Вы можете получить все свои отпечатки пальцев из https://console.developers.google.com/projectselector/apis/credentials
И используйте этот код Kotlin, чтобы преобразовать его в keyhash:
fun main(args: Array<String>) {
listOf("<your_production_sha1_fingerprint>",
"<your_debug1_sha1_fingerprint>",
"<your_debug2_sha1_fingerprint>")
.map { it.split(":") }
.map { it.map { it.toInt(16).toByte() }.toByteArray() }
.map { String(Base64.getEncoder().encode(it)) }
.forEach { println(it) }
}
Ответ 16
Я нашел самый простой инструмент и использовал его много раз, он отлично работает. проверьте это, это поможет.
Проверьте этот ответ для получения более подробной информации.
Ответ 17
https://developers.facebook.com/docs/android/getting-started/
4.19.0 - 25 января 2017 г.
Facebook SDK
модифицированный
Facebook SDK теперь автоматически инициализируется при запуске приложения. В большинстве случаев ручной вызов FacebookSDK.sdkInitialize() больше не требуется. Смотрите руководство по обновлению для более подробной информации.
Для отладки
try {
PackageInfo info = getPackageManager().getPackageInfo(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));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Ответ 18
ЛЕГКИЙ ПУТЬ → Не устанавливайте openssl → ИСПОЛЬЗУЙТЕ GIT BASH!
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Пароль по умолчанию "Android"
У большинства из нас установлен Git Bash, так что это мой любимый способ.
Ответ 19
Если вы уже загрузили приложение в Play store, вы можете сгенерировать Hash Key следующим образом:
1) Зайдите в Управление релизами здесь
2) Выберите Управление релизами → Подписание приложения
3) Вы можете увидеть ключ SHA1 в шестнадцатеричном формате сертификата подписи приложения.
4) Скопируйте SHA1 в шестнадцатеричном формате и преобразуйте его в формат base64, вы можете использовать эту ссылку, чтобы сделать это без SHA1: часть шестнадцатеричного числа.
5) Зайдите в консоль разработчика Facebook и добавьте ключ (после конвертации в base 64) в настройках → basic → key hashes.
Ответ 20
У меня была такая же точная проблема, меня не спрашивали пароль, и, похоже, у меня был неправильный путь к файлу хранилища ключей.
На самом деле, если keytool не найдет хранилище ключей, которое вы установили, оно создаст его и даст неверный ключ, поскольку он не использует правильный.
Общее правило заключается в том, что если вас не просят ввести пароль, тогда вы создаете не тот ключ.
Ответ 21
Вы можете использовать этот APK
1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
Ответ 22
Попробуйте этот ответ
fooobar.com/questions/6174/...
с минимальными усилиями помогает решить проблему.
Ответ 23
это также поможет новичкам.
просто добавив больше деталей к ответу @coder_For_Life22.
Если этот ответ поможет, не забудьте поднять голос. это мотивирует нас.
для этого вы уже должны знать путь к файлу хранилища ключей приложения и пароль
для этого примера рассмотрим ключ хранится в "c:\keystorekey\new.jks"
1. откройте эту страницу https://code.google.com/archive/p/openssl-for-windows/downloads
2. Загрузите 32- или 64-битный ZIP файл в соответствии с операционной системой Windows.
3. Распакуйте загруженный файл в любое место и запомните путь.
4. для этого примера мы считаем, что вы извлекли папку в папке загрузки.
поэтому адрес файла будет "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe";
5. Теперь на клавиатуре нажмите кнопку Windows + R.
6. это откроет окно запуска.
7. введите cmd и нажмите Ctrl + Shift + Enter.
8. откроется командная строка с правами администратора.
9. здесь перейдите к папке java bin:
если вы используете jre, предоставленный Android Studio, вы найдете путь следующим образом:
а. открытая андроид студия.
б. file-> структура проекта
с. на левой панели нажмите "Расположение SDK"
д. на правой панели ниже "JDK location" указан ваш JRE-путь.
е. добавьте "\ bin" в конце этого пути, так как файл "keytool.exe", который нам нужен, находится внутри этой папки.
для этого примера я считаю, что вы установили Java отдельно, а следующий путь
"C:\Program Files\Java\jre-10.0.2\bin"
если вы установили 32-битную Java, он будет в
"C:\Program Files (x86)\Java\jre-10.0.2\bin"
10. Теперь с указанными выше путями выполните команду следующим образом:
keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
- Вам будет предложено ввести пароль, укажите пароль, который вы указали при создании ключа хранилища ключей.
!!!!!! это даст вам ключ
ошибки: если вы получаете:
---
'keytool' не распознается как внутренняя или внешняя команда
---
это означает, что Java установлен где-то еще.
Ответ 24
Шаг 1 папка проекта open ur
Шаг 2 открыть папку проекта ur/перейти на командную страницу
Пример: D:\Нэвин\Проект\androidproject>
Шаг 3 вставьте эту строку в свою строку cmd
D:\naveen\project\androidproject> keytool -list -v -keystore C:\Users\admin.android/debug.keystore-alias androiddebugkey -storepass android -keypass android
Шаг 4 просто измените ваш C:\Users\admin-→ ваш путь
вы получили значение SHA1 value нажмите на эту ссылку и преобразовать значение SHA1 ur в HASH KEY
я на 100% уверен, что эта ссылка поможет вам