Как создать Android Hash Key Hash? - PullRequest
       40

Как создать Android Hash Key Hash?

155 голосов
/ 22 сентября 2011

Я вообще не понимаю этот процесс.Я был в состоянии перейти к папке, содержащей keytool в Java SDK.Хотя я продолжаю получать сообщение об ошибке, openssl не распознается как внутренняя или внешняя команда.Проблема в том, что даже если я смогу заставить это работать, что я буду делать и с чем потом?

Ответы [ 22 ]

207 голосов
/ 22 сентября 2011

Вот что вам нужно сделать -

Скачать openSSl из Код Извлеките это. создайте папку - OpenSSL в C: / и скопируйте извлеченный код сюда.

определить путь к файлу debug.keystore. Если вы не нашли, то выполните поиск в 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

он попросит пароль, поставь андроид это все. ты получишь хэш ключа

145 голосов
/ 07 августа 2013

Для 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 " и для разблокировки необходимо ввести пароль, который вы установили при создании хранилища ключей .

72 голосов
/ 27 августа 2014

Пожалуйста, попробуйте это:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(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);
        }
    }
47 голосов
/ 22 сентября 2011

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 и прокрутите вниз. После этого подождите несколько минут, пока изменения не вступят в силу.

21 голосов
/ 18 февраля 2014

, чтобы сгенерировать ваш хэш ключа на локальном компьютере, запустите утилиту keytool Java (которая должна находиться на пути к вашей консоли) в хранилище ключей отладки 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

14 голосов
/ 08 февраля 2018

Существует и короткое решение. Просто запустите это в вашем приложении:

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);
    }
}

Результат должен заканчиваться на "=".

13 голосов
/ 15 сентября 2017

Для таких, как я, здесь есть полная информация (Для 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, как я

enter image description here

теперь у вас есть расположение 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

введите пароль хранилища ключей. Если вы введете неправильный пароль, он выдаст неверный KeyHash

ПРИМЕЧАНИЕ

Если по какой-то причине, если она дает ошибку по какому-то пути, оберните этот путь в двойные кавычки. Также оболочка питания 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
9 голосов
/ 21 апреля 2014

Для Windows:

  1. открыть командную строку и вставить команду ниже

keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore |openssl sha1 -binary |openssl base64

Введите пароль: android -> Hit Enter

Скопируйте сгенерированный хэш-ключ -> Войдите в Facebook под своей учетной записью разработчика

Перейдите в приложение Facebook -> Настройки -> Вставить ключ хэша в опции «ключевые хеши» -> сохранить изменения.

Теперь протестируйте свое приложение для Android с помощью Facebook Log-в / доля и т. д.

6 голосов
/ 30 июня 2018

Начиная с 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)
    }

}

enter image description here

6 голосов
/ 04 января 2013

Вот как я получил свой:

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 вставил ПРАВОЙ ключ в это исключение.Все, что вам нужно сделать, это скопировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...