Как создать Android Facebook Key Hash?



Я не понимаю этот процесс. Я смог перейти к папке, содержащей keytool в Java SDK. Хотя я продолжаю получать ошибку openssl не распознается как внутренняя или внешняя команда. Проблема в том, что даже если я смогу заставить это работать, что я буду делать и с чем потом?

894   18  

18 ответов:

вот что вам нужно сделать -

скачать openSSl из код Извлечь его. создайте папку-OpenSSL в C: / и скопируйте извлеченный код здесь.

обнаружить отладки.путь к файлу хранилища ключей. Если u не нашел, то выполните поиск в C:/ и используйте путь в команде на следующем шаге.

обнаружения ваших ключей.exe-путь и перейдите в эту командную строку dir/ in и запустите эту команду в 1 строке -

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

он запросит пароль, поставит андроид вот и все. u получит ключ-хэш

для Linux и Mac

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

Для Построения Debug

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

вы найдете "отладка".хранилища ключей в ".папку Android". Скопируйте его и вставьте на рабочий стол и выполните приведенную выше команду.

для построения выпуска

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

Примечание : убедитесь, что в обоих случаях он запрашивает пароль. Если он не запрашивает пароль, это означает, что что-то не так в команде. Пароль для "отладка".хранилища ключей и "android" и для выхода вы должны ввести пароль, который вы установить во время создания хранилища ключей.

пожалуйста, попробуйте это:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }

OpenSSL: вы должны установить это, если он не поставляется с предустановленной операционной системой (например, Windows не имеет предустановленной). Как установить это зависит от вашей ОС (для Windows проверьте ссылке предоставлено coder_For_Life22).

самый простой способ без возни-это копирование этого openssl.exe двоичный файл для вашего пути keytool, если вы находитесь на Windows. Если вы не хотите этого делать, вы должны добавить его в свой PATH окружающая среда переменная. Затем выполните команду, указанную в документах.

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

обратите внимание, что аргумент после -keystore указывает на хранилище ключей отладки. Такое расположение зависит от вашей операционной системы. Должен быть в одном из следующих мест:

  • Windows Vista или 7 - C:\Users\.android\debug.хранилища ключей
  • Windows XP - C:\Documents и настройки\.android\debug.хранилища ключей
  • OS X и Linux -~/.андроид/отладки.хранилища ключей

если вы все сделали правильно, вам будет предложено ввести пароль. То есть android для сертификата. Если пароль правильный, консоль выводит хэш (несколько случайных символов и чисел).

возьмите это и скопируйте в android key hash поле внутри настроек вашего приложения на facebook. Чтобы попасть туда, зайдите вdevelopers.facebook.com/apps, выберите приложение, перейдите в Edit settings и прокрутки вниз. После этого, подождите несколько минут, пока изменения вступят в силу.

чтобы создать свой хэш ключа на локальном компьютере, запустите утилиту keytool Java (которая должна быть на пути к вашей консоли) против хранилища ключей отладки Android. Это, по умолчанию, в вашем доме .каталог Android). В OS X запустите:

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

в Windows, используйте:-

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

надеюсь, что это поможет вам

Ref-разработчик сайта facebook

Для Windows:

  1. открыть командную строку и вставьте следующую команду

keytool-exportcert-псевдоним androiddebugkey-keystore %HOMEPATH%.android\debug.keystore / openssl sha1-binary | openssl base64

  1. введите пароль: android -- > нажмите Enter

  2. скопируйте сгенерированный хэш-ключ -- > войдите в Facebook с помощью своей учетной записи разработчика

  3. Go в вашем приложении Facebook -- > настройки-- > вставить хэш-ключ в опции "ключевые хэши" -->сохранить изменения.

  4. теперь протестируйте свое приложение для android с помощью Facebook Log-in / Share и т. д.

есть и короткое решение. Просто запустите это в своем приложении:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

более длинный, который не нуждается в FB SDK (на основе решения здесь):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

результат должен заканчиваться на"=".

вот как я получил мое:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

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

для кого-то вроде меня вот подробная информация (Для Windows)

1. скачать OpenSSl либо 1-й или 2-й на основе вашей системы 32bit или 64bit .

2. извлеките загруженный zip внутри каталога C

3. откройте извлеченную папку до bin и скопируйте путь ,это должно быть что-то типа C:\openssl-0.9.8k_X64\bin\openssl (добавить \openssl на конец)

4. (получить путь к папке bin Jdk ,если вы знаете,как, игнорировать это ) .

откройте android studio ~file~структура проекта (ctrl+alt+shift+s), выберите расположение SDK в левой боковой панели, скопируйте расположение JDK и добавьте /bin к нему

таким образом, окончательное расположение JDK будет похоже C:\Program Files\Android\Android Studio\jre\bin

мы следуем этому методу, чтобы получить расположение Jdk, потому что вы можете использовать встроенный jdk, как я

enter image description here

теперь у вас есть OpenSSl location & JDK location

5. теперь нам нужно отладить расположение хранилища ключей, для этого откройте C~>Users~>YourUserName~>.android должно быть имя файла debug.хранилище ,скопировать путь ,это должно быть что-то типа

C:\Users\Redman\.android\debug.keystore

6. теперь откройте командную строку и введите команду

cd YourJDKLocationFromStep4  

в моем случае

 cd C:\Program Files\Android\Android Studio\jre\bin

7. теперь построим следующую команду

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

в моем случае команда будет выглядеть так

keytool -exportcert -alias androiddebugkey -keystore C:\Users\Redman\.android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64

теперь введите эту команду в командной строке , если вы когда-либо делали все правильно, вам будет предложено ввести пароль (пароль-android)

Enter keystore password:  android

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

для легкого vedio учебник ссылка для генерации KeyHash здесь

скачать openssl из здесь

скачать open ssl:

затем добавьте openssl\bin к системным переменным пути:

Мой Компьютер - > Свойства - > расширенные конфигурации - > расширенные - > системные переменные - > в разделе системные переменные найдите путь и добавьте его в свои окончания: ;yourFullOpenSSLDir\bin

теперь откройте командную строку в папке jdk\bin C:\Program Files\Java\jdk1. 8. 0_40\bin (в windows удерживайте shift и щелкните правой кнопкой мыши -> открыть командную строку здесь) и использование:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

и скопируйте номер длины 28, который он генерирует после ввода пароля.

начиная с API 26, Вы можете создать свой ХЭШ-КЛЮЧИ использовать следующий код Котлин без какой-либо необходимости Facebook SDK.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

enter image description here

вы можете получить все ваши отпечатки пальцев от https://console.developers.google.com/projectselector/apis/credentials
И используйте этот код Котлина, чтобы преобразовать его в keyhash:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}

Я нашел самый простой инструмент и использовать его много раз, он отлично работает. проверьте это, это поможет.

Регистрация этой ответьте для получения более подробной информации.

запустите либо это в вашем приложении:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

или такой:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

а затем посмотрите на журналы.

результат должен заканчиваться на"=".

решение здесь и здесь .

У меня была та же самая проблема, меня не спрашивали пароль, и кажется, что у меня был неправильный путь для файла хранилища ключей.

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

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

вы можете использовать этот apk

1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want

https://developers.facebook.com/docs/android/getting-started/

4.19.0-25 января 2017

Facebook SDK

изменен

Facebook SDK теперь автоматически инициализируется при запуске приложения. В большинстве случаев ручной вызов FacebookSDK.sdkInitialize () больше не требуется. Смотрите руководство по обновлению для более подробной информации.

Для Отладки

try {
    PackageInfo info = getPackageManager().getPackageInfo(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));
    }
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

Comments

    Ничего не найдено.