java - через - хэш ключ facebook




Как создать Android-хэши Facebook Facebook? (11)

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

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

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

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

  • Windows Vista или 7 - C: \ Users \ .android \ debug.keystore
  • Windows XP - C: \ Documents and Settings \ .android \ debug.keystore
  • OS X и Linux - ~ / .android / debug.keystore

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

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

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


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

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 помещает ключ RIGHT в это исключение. Все, что вам нужно сделать, это скопировать его.


Вы можете использовать этот 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://console.developers.google.com/projectselector/apis/credentials
И используйте этот код Kotlin, чтобы преобразовать его в 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) }
}

Для легкой ссылки vedio tutorial для генерации KeyHash Here

Скачать openssl из HERE


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

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);
    }
}

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

Результат должен заканчиваться на «=».

Решение основано here и here .


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

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

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

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

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


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


Скачать 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-значный номер, который он генерирует после ввода пароля.


Для Windows:

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

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

  1. Введите пароль: android -> Hit Enter

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

  3. Перейдите в свое приложение Facebook -> Настройки -> Вставить хэш-ключ в опции «хэши-ключи» -> сохранить изменения.

  4. Теперь протестируйте свое приложение для Android с помощью Facebook-входа / совместного использования и т. Д.





facebook