Ключевой хэш для приложения Android-Facebook - PullRequest
219 голосов
/ 08 декабря 2010

Я работаю над приложением для Android, в которое хочу интегрировать функцию публикации в Facebook.Я скачал Facebook-Android SDK и получил там readme.md (текстовый файл), в котором упоминается, что он генерирует хэш ключа для Android.Как мне его сгенерировать?

Ответы [ 25 ]

6 голосов
/ 26 июня 2011

Вам необходимо создать хранилище ключей с помощью keytool для подписанных приложений для Android, как описано в Android-сайте , затем нужно установить cygwin, а затем установить openssl из кода Google , затем просто выполните следующую команду, и вы получите хеш-ключ для Android, а затем вставите этот хеш-ключ в созданное вами приложение facebook. И затем вы можете получить доступ к приложению facebook через приложение Android для публикации стены (например, "publish_stream").

$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64

Вам нужно выполнить вышеуказанную команду из cygwin.

6 голосов
/ 18 февраля 2016
  1. Просто откройте ваш основной файл активности и создайте нижеприведенную функцию:

         try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.application.package.name",
                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 (PackageManager.NameNotFoundException e) {
    
    } catch (NoSuchAlgorithmException e) {
     }
    

1.1 Запустите ваше приложение, это сгенерирует хеш-ключ для вашего приложения.

  1. Теперь откройте журнал cat и выполните поиск с помощью «KeyHash» и скопируйте ключ хеш-функции.

  2. Сгенерировав хэш-ключ, вы можете удалить эту функцию.

6 голосов
/ 07 октября 2013

Скачать openSSL -> Установить его -> обычно устанавливается в C: \ OpenSSL

затем откройте cmd и наберите

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

, чтобы проверить версию jdk. Перейдите в C: / program files / java / jdk_version

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

Он попросит вас ввести паролькоторый андроид.

5 голосов
/ 28 марта 2013

Официальная документация на сайте разработчика Facebook :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                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) {

    }
5 голосов
/ 14 декабря 2010

1) Создайте ключ для подписи вашего приложения и запомните псевдоним.

2) Установите OpenSSL.

3) Поместите папку bin OpenSSL на ваш путь.

4) Выполните шаги, указанные в разделе «Настройка единого входа» на странице FB-Android-SDK , и сгенерируйте свой хэш-ключ.Убедитесь, что вы указали правильное имя файла псевдонима и хранилища ключей.

5) Создайте приложение в Facebok и на вкладке «Мобильные устройства» введите этот ключ хэширования.

4 голосов
/ 13 мая 2013
keytool -exportcert -alias androiddebugkey -keystore       C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64

Это сработало для меня ...

Шаги:

1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64 

    ....................   give proper debug.keystore path and openSSL path .. 

4) Finley it may be ask u password .. so give password -> android   ...
5) you will get 28 characters that will be your has key
4 голосов
/ 10 сентября 2017

Когда ответил на похожую проблему, я обнаружил, что это работает для меня:

  • Скопируйте файл apkname.apk, для которого вы хотите знать хеш, в папку Java \ jdk1.7.0_79 \ bin '
  • Выполнить эту команду keytool -list -printcert -jarfile apkname.apk
  • Скопируйте значение SHA1 и преобразуйте его, используя этот сайт
  • Использовать преобразованное значение Keyhash ( напр. ZaHqo1xcaPv6CmvlWnJk3SaNRIQ = )
4 голосов
/ 07 августа 2013

Для Linux

Открытый терминал:

Для отладочной сборки

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

ПРИМЕЧАНИЕ. Убедитесь, что в обоих случаях требуется запрос пароля. Если он не запрашивает пароль, это означает, что в команде что-то не так.

4 голосов
/ 24 июля 2014

Для приложения Android

Этот код используется для получения хеш-ключа в приложении Android для интеграции с Facebook.Я проверил все устройства, и это работает.Измените только название пакета этого кода:

private void facebookHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashCode  = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            System.out.println("Print the hashKey for Facebook :"+hashCode);
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}
3 голосов
/ 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){

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