Facebook Android Генерирует Ключевой Хэш

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

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

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

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

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

20 ответов


удалить сертификат отладки в ~/.android / отладка.хранилище ключей (в Linux и Mac OS X); каталог-это что-то вроде %USERHOME%/.android на Windows.

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

Дайте мне знать, если это работает.


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

1) Скачать Openssl из:здесь.

2) Сделать в OpenSSL на C диск

3) извлеките Zip-файлы в это в OpenSSL папка создана в C диск.

4) скопируйте файл "отладка".хранилища ключей С .android папка в моем случае (C:\Users\SYSTEM - ... Android) и вставить в Папка JDK bin в моем случае (C:\Program файлы\Java\jdk1.6.0_05\bin)

5) открыть командную строку и дайте путь к папке JDK Bin в моем случае (C:\Program файлы\Java\jdk1.6.0_05\bin).

6) скопируйте следующий код и нажмите enter

keytool-exportcert-псевдоним androiddebugkey-отладка хранилища ключей.хранилище > c:\openssl\bin\debug.txt

7) Теперь вам нужно введите пароль пароль = андроид.

8) Если вы видите в в OpenSSL папка Bin, вы получите файл с именем "отладка".txt

9) Теперь вы можете перезапустить командную строку или работать с существующими командной строке

10) вернитесь на диск C и дайте путь openssl Bin папку

11) скопируйте следующий код и вставьте

openssl sha1-двоичная отладка.формат txt> debug_sha.txt

12) вы получите debug_sha.txt в папке OpenSSL bin

13) Снова скопируйте следующий код и вставьте

в OpenSSL base64 и в debug_sha.txt > debug_base64.txt

14) вы получите debug_base64.txt в папке OpenSSL bin

15) откройте debug_base64.txt файл вот ваш ключевой хэш.


обновленный ответ (генерация через код) более простой метод:

по моему опыту, openssl всегда был хлопотным, я попробовал второй метод, предложенный 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.фейсбук.образцы.loginhowto с вашим собственным именем пакета (имя пакета в Манифесте.XML.)

официальная ссылка -https://developers.facebook.com/docs/android/login-with-facebook/ (см. Нижнюю часть страницы)

старый ответ (генерация Keyhash с помощью openssl )

  1. для создания подписи вам нужно openssl установлен на вашем компьютере. Если у вас нет одной загрузки openssl от вот!--19-->
  2. В C:, Create openssl папку
  3. извлеките содержимое загруженного zip-файла openssl в (i.e в моем случае это C:\Users\Anhsirk , вам просто нужно изменить это для своей учетной записи пользователя.

    дайте пароль как android

    . Если не задать пароль вашем пути keystore является неправильный.

    если все работает нормально, он должен дать вам хэш-ключ ниже.

    enter image description here


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


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

  1. скачать openssl-0.9.8e_X64
  2. создайте папку openssl на диске C
  3. извлечение Zip-файлов в папку openssl
  4. Пуск - > Выполнить: cmd (нажмите enter)
  5. (нажать) компакт-диск C:\Program Файлы\Java\jdk1.6.0_45\bin. Примечание: C:\Program файлы\Java\jdk1.6.0_45\bin: путь к папке jdk на вашем компьютере
  6. (нажмите) keytool-exportcert-псевдоним gci-keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1-двоичный | C:\openssl\bin\openssl base64. Примечание: D:\folder\keystorerelease: путь к вашему keystorerelease

  7. введите пароль хранилища ключей: это пароль, когда ваш регистр keystorerelease.

    вы имейте ключевой хэш: jDehABCDIQEDWAYz5Ow4sjsxLSw=
  8. логин facebook. Доступ к управлению приложениями. Вставить хэш ключа в приложение на developers.facebook.com


САМОЕ ПРОСТОЕ РЕШЕНИЕ ДЛЯ ЭТОЙ ПРОБЛЕМЫ:

У меня была эта проблема в течение двух месяцев. Мои ключевые хэши были pyling до 9. Сегодня я наконец нашел простое решение:

Шаг 1:

установите Facebook sdk, загруженный со страницы разработчика facebook на вашем телефоне. Не устанавливайте обычное приложение facebook. Убедитесь, что вы можете войти в facebook. Тогда выйдите из системы.

шаг 2:

экспортируйте свое приложение с помощью ключа окончательной версии в качестве apk, как и при загрузке его в playstore.

Шаг 3:

поместите файл Apk на свой телефон через usb-кабель или usb-накопитель.

Шаг 4:

установите приложение, используя файловый менеджер:пример

Шаг 5:

запустите приложение и попробуйте войти в систему с facebook. Диалог будет откройте и скажите: "ключ YOURHASHKEY не найден в консоли разработчика facebook"

Шаг 6:

записать ключ.

Шаг 7.

поместите его в консоль разработчика facebook и сохраните. Теперь вы закончили. Любой, кто загружает ваше приложение, опубликованное с ранее использованным хранилищем ключей, может войти в facebook.

наслаждайтесь


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


пароль сертификата отладки-android, а не Android


наконец :)

вот моя история :

  1. добавьте этот код в основное действие после установки макета.

    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) {
    }
    
  2. имя_проекта изменение названия пакета!

  3. подписать приложение (Android Tools->экспорт подписанного приложения)
  4. в вашей основной деятельности, где вы вставляете код из опции 2, в вашем макете создайте TextView с id textstring
  5. раскомментируйте две строки, что ваш знак код будет установлено значение TextView 6 Wuolia, у вас есть свой хэш, установите приложение на свой телефон!!! и проверьте свой хэш-ключ!
  6. теперь, когда он виден, перейдите в созданное вами приложение facebook и добавьте его в [ключевые хэши]
  7. обратите внимание, что ваше имя пакета должно быть таким же, как на facebook [имя пакета] в разделе [Ключевые хэши]
  8. хорошего дня :)

одно решение для генерации для facebook

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

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

1) Скачать в OpenSSL

2) создайте папку openssl на диске C

3) извлеките Zip-файлы в эту папку openssl, созданную на диске C.

4) скопируйте файл debug.keystore from .папка android в моем случае (C:\Users\SYSTEM - ... android) и вставить в папку JDK bin в моем случае (C:\Program файлы\Java\jdk1.6.0_05\bin)

5) Откройте командную подскажите и укажите путь к папке JDK Bin в моем случае (C:\Program файлы\Java\jdk1.7.0_40\bin).

6) скопируйте следующий код и нажмите enter

keytool-exportcert-псевдоним abcd-хранилище ключей D:\Projects\MyAppFolder\keystore - ... txt | C:\openssl\bin\openssl sha1-двоичный | C:\openssl\bin\openssl base64 ex-keytool-exportcert-alias (ваше имя псевдонима apk sing введите здесь, как мой знак apk alian имя abcd ) - keystore "подписанный apk сгенерированный keystore apth введите здесь" | " OpenSSL bin путь к папке введите здесь "sha1-binary |" путь к папке openssl bin введите здесь " base64

7) Теперь вам нужно ввести пароль, Password = (введите пароль хранилища ключей здесь)

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


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

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

    keytool-exportcert-псевдоним androiddebugkey-хранилище ключей %HOMEPATH%.android\debug.keystore | "C:\openssl\bin\openssl - ... exe " sha1-binary | "C:\openssl\bin\openssl - ... ехе" в base64

внимание!: пожалуйста, замените путь для OpenSSL.exe (в этом примере это "C:\openssl\bin\openssl.exe") с вашим собственным путем установки.

  1. он запросит пароль, например,

ввод ключей пароль: андроид

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

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

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

keytool-exportcert-псевдоним YOUR_RELEASE_KEY_ALIAS-хранилище ключей YOUR_RELEASE_KEY_PATH | " путь для openssl.ехе" и SHA1 -двоичный | в OpenSSL base64 и


отличный пост в блоге на эту тему

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

  1. откройте терминал или командную строку и перейдите в папку, где ваш .ключевые P12-это.
  2. введите: "keytool-v-list-keystore mycert.P12-тип хранилища pkcs12 " где mycert.P12-это имя вашего .ключевые Р12.
  3. введите пароль для хранилища ключей (тот, который вы использовали при экспорте .ключ Р12). 4 . Скопируйте текст байтов подписи отпечатка пальца sha1.
  4. байты в формате SHA1 подпись отпечатка пальца необходима для записи " sha1.файл bin". Для вставки скопированных байтов можно использовать шестнадцатеричный редактор. После этого сохраните файл как " sha1.закром."
  5. открыть терминал снова и введите: "в OpenSSL base64-формате -в формате SHA1.bin-out base64.формат txt."
  6. в результате "в base64.txt " будет содержать ключевой хэш, необходимый для Facebook.

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

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

ссылке


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

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

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

A ссылка на скачивание банку

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


Привет всем его моя история, как я подписался имеет ключ для 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 methode если вы хотите подписанный хэш, то сделайте подписанную сборку установите подписанную сборку и запустите вы получите хэш-ключ в диалоговом окне, а затем просто отметьте его и обновите на Facebook dev аккаунт и прокомментируйте эту функцию и сделайте еще один подписанный APK**


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

и для генерации keyHash попробуйте эту ссылку здесь


создать отладочный хэш-ключ

  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

единственное, что работает для меня, используя пароль android. Почему это не упоминается ни в каких путеводителях?


используйте это в kotlin для хэша ключа печати в log

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){

    }