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

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

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

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

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

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

Ответы [ 21 ]

277 голосов
/ 13 сентября 2012

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

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) Откройте командную строку и укажите путь к папке Jin 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) Теперь вам нужно ввести пароль , пароль = android.

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

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

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

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

openssl sha1 -binary debug.txt> debug_sha.txt

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

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

openssl base64 -indebug_sha.txt> debug_base64.txt

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

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

146 голосов
/ 21 ноября 2012

ОБНОВЛЕННЫЙ ОТВЕТ (Генерация с помощью кода) Более простой метод:

По моему опыту, 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.facebook.samples.loginhowto на собственное имя пакета (имя пакета в Manifest.xml).

Официальная ссылка - https://developers.facebook.com/docs/android/login-with-facebook/ (см. Внизу страницы)

СТАРЫЙ ОТВЕТ (Создание Keyhash с использованием openssl)

  1. для генерацииподпись вам нужно OpenSSL установлен на вашем компьютере.Если у вас нет одного загружаемого файла openssl отсюда
  2. В C: создайте openssl папку
  3. и извлеките содержимое загруженного zip-файла openssl в opensslв папке C: диск
  4. открыть командную строку
  5. перейти к bin из openssl, т.е. C:\openssl\bin в командной строке
  6. , выполнить следующую командугенерировать ваш ключПри генерации хеш-ключа он должен спрашивать у вас пароль.

    keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ Anhsirk.android \ debug.keystore" |openssl sha1 -binary |openssl base64

ПРИМЕЧАНИЕ : в приведенном выше коде обратите внимание, что вам нужно указать свой путь к пользователю (т.е. в моем случае этоC: \ Users \ Anhsirk, вам просто нужно изменить это для своей учетной записи пользователя.

Введите пароль как android

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

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

enter image description here

20 голосов
/ 15 марта 2011

Удалите сертификат отладки в ~ / .android / debug.keystore (в Linux и Mac OS X); этот каталог похож на% USERHOME% /. android в Windows.

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

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

14 голосов
/ 12 августа 2013

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

12 голосов
/ 06 сентября 2013

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. (нажмите) cd C: \ Program Files \ Java \ jdk1.6.0_45 \ bin. Примечание: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin: путь к папке jdk на вашем компьютере
  6. (нажмите) keytool -exportcert -alias gci -keystore D: \ folder \ keystorerelease | C: \ openssl \ bin \ openssl sha1 -binary | C: \ openssl \ bin \ openssl base64. Примечание: D: \ folder \ keystorerelease: путь к вашему хранилищу ключей Release

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

    Тогда у вас будет ключевой хеш: jDehABCDIQEDWAYz5Ow4sjsxLSw =

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

9 голосов
/ 30 января 2015

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

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

ШАГ 1:

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

ШАГ 2:

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

ШАГ 3:

Поместите файл Apk на телефон через USB-кабель или USB-флешку.

ШАГ 4:

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

ШАГ 5:

Запустите ваше приложение и попробуйте войти через Facebook. Откроется диалоговое окно с сообщением: «Ключ YOURHASHKEY не найден в консоли разработчика facebook»

ШАГ 6:

Запишите ключ.

ШАГ 7:

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

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

7 голосов
/ 20 апреля 2012

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

6 голосов
/ 04 февраля 2019

Самый простой способ создания хеш-ключа.

Требование: Ключ 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.

6 голосов
/ 03 июля 2011

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

6 голосов
/ 04 февраля 2014

Наконец:)

Вот мой рассказ:

  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. Измените PROJECTNAME на имя своего пакета!

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