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 ниже.

enter image description here

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

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

Введите пароль хранилища ключей: 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

Смотрите изображение ниже.

enter image description here

после запуска файла будет сгенерирован ваш вывод, содержащий требуемый ключ sha1.

enter image description here

Затем перейдите на http://tomeko.net/online_tools/hex_to_base64.php

и вставьте свой ключ sha1

enter image description here

и, наконец, вы получите обязательный HashKey.