Facebook Android генерирует хэш ключей - PullRequest
116 голосов
/ 15 марта 2011

Пытаясь создать приложение для Android с интеграцией с Facebook, я попал в ту часть документов, где вам нужно сгенерировать ключевой хеш-файл, в котором указано, что нужно запустить следующий код

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore 
| openssl sha1 -binary
| openssl base64

Когда я запускаю это в своем терминале, я получаю сообщение об ошибке в Keystore, подделанном или неверный пароль,

Я просто хочу сгенерировать мой хэш ключа

Кто-нибудь может указать мне правильное направление?

Ответы [ 21 ]

5 голосов
/ 03 ноября 2016

Однострочное решение для генерации для фейсбука

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
4 голосов
/ 03 июля 2014

Чтобы сгенерировать хэш ключа разблокировки, нужно выполнить несколько простых шагов.

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.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 введите здесь, как мой знак apk alian name is abcd) -keystore "подписанный apk сгенерированный склад ключей apth enter here" | "путь к папке openssl bin введите здесь" sha1 - двоичный файл | «Путь к папке openssl введите здесь» base64

7) Теперь вам нужно ввести пароль, Пароль = (введите здесь свой пароль для хранения пароля)

8) у вас есть хранилище ключей, которое используется для выпуска хэша ключа приложения

3 голосов
/ 11 января 2018

Создать хеш-ключ отладки

  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
3 голосов
/ 25 августа 2015

Несмотря на то, что эта ветка старая, я хотел бы поделиться своим опытом (недавно начал работать с Facebook), который мне кажется прямым:

  1. Скачать openssl по ссылке ниже: https://code.google.com/p/openssl-for-windows/downloads/list
  2. Распакуйте его на локальный диск (например, C: \ openssl)
  3. Чтобы получить ключ разработки для интеграции с Facebook, используйте следующую команду из командной строки в windows:

    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") с вашим собственным путем установки.

  1. Будет запрошен пароль, например,

Введите пароль хранилища ключей: android

Введите android в качестве пароля, как показано выше.

Вот и все! Вам будет дан ключ длиной 28 символов. Ура!

Используйте ту же процедуру, чтобы получить ключ разблокировки. Просто замените команду на следующую и используйте псевдоним ключа разблокировки.

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "ПУТЬ ДЛЯ openssl.exe" sha1 -binary | openssl base64

2 голосов
/ 10 августа 2016

Попробуйте передать пароль для ключа и сохранить как часть команды

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android \
| openssl sha1 -binary \
| openssl base64
2 голосов
/ 03 октября 2013

Отличный пост в блоге по теме

Извлечение ключа хэша из ключа .p12

  1. Откройте Терминал или Командную строку и перейдите туда, где находится ваш ключ .p12.
  2. Введите: «keytool -v -list -keystore mycert.p12 -storetype pkcs12 ″, где mycert.p12 - имя файла вашего ключа .p12.
  3. Введите пароль хранилища ключей (тот, который вы использовали при экспорте ключа .p12). 4 Скопируйте текст байтов подписи отпечатка пальца sha1.
  4. Байты в сигнатуре отпечатка пальца sha1 необходимы для записи файла «sha1.bin». Вы можете использовать шестнадцатеричный редактор, чтобы вставить скопированные вами байты. После этого сохраните файл как «sha1.bin».
  5. Снова откройте терминал и введите: «openssl base64 -in sha1.bin -out base64.txt».
  6. Результирующий файл «base64.txt» будет содержать хэш-ключ, необходимый для Facebook.

Отличный и простой шестнадцатеричный редактор для Mac: HexFiend

OpenSSL должен быть предварительно установлен на Mac, и вот ссылка для версии Windows.

Ссылка

1 голос
/ 16 февраля 2016

Если ваш пароль = android неправильный, тогда поставьте пароль вашего ПК, чтобы он работал для меня.

И для генерации ключаHash попробуйте эту ссылку Здесь

1 голос
/ 04 ноября 2015

Привет всем, моя история, как я подписан, имеет ключ для 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();
}

** Вызовите функцию getAppKeyHash () из вашего метода oncreate, если вы хотите подписать хеш, затем сделайте подписанную сборку, установите подписанную сборку и запустите, вы получите хеш-ключ в диалоговом окне, затем просто отметьте его и обновите в учетной записи разработчика Facebook и прокомментируйте эту функцию и сделать еще один подписанный APK **

1 голос
/ 29 октября 2013

Я смог выполнить запрошенную задачу с некоторыми из решений здесь, но подумал про себя, парень, что глупо ... почему бы не написать небольшой код Java, который делает это, и упаковать его в Jar Я сделал ...

A ссылка для скачивания Баночка

Работает в Windows 8 ... не пробовал другие ОС.

0 голосов
/ 19 января 2018

используйте это в 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){

    }
...