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


182

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


если вы используете последнюю версию Facebook SDK и если вы вставили свой API-интерфейс facebook отлично, то при входе в систему вы нажимаете на кнопку входа в Facebook, тогда в вашем logcat печатается ключ хеша.
Mehul Ranpara

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

Зачем кому-то хотеть создать ключ отладки?
Андерс Линден

Я сгенерировал хэш ключа, но не знаю, куда поместить этот ключ. Я работаю в Android Studio на Ubuntu.
Апурва

Ответы:


242

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

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

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

определите путь к файлу keytool.exe и перейдите в командную строку этого каталога / dir и выполните эту команду в 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

он попросит пароль, поставь андроид вот и все. ты получишь ключик


когда он просит пароль, я могу поставить все, что я хочу?
Сомк

5
@Max, пароль по умолчанию android.
Джамапаг

2
ключевой хэш не соответствует ни одному из сохраненных ключевых хэшей android, не работает
Boldijar Paul

1
Сначала создайте хранилище ключей, перейдя в Build -> Build Apk из вашей студии. укажите имя, пароль и т. д. Сохраните его в виде файла .jks в легко доступной папке. Теперь скопируйте путь и сгенерируйте ключ, заменив этот путь в вышеупомянутом ответе.
buggydroid

1
Он показывает мне ошибку: "... Выражения допускаются только в качестве первого элемента конвейера. В строке: 1 char: 184 ... Неожиданный токен" sha1 "в выражении или выражении. ... Выражения допускаются только как первый элемент конвейера. ... Неожиданный токен 'base64' в выражении или операторе. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: ExpressionsMustBeFirstInPipeline "
разработчик Android

175

Для Linux и Mac

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

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

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

ПРИМЕЧАНИЕ. Убедитесь, что в обоих случаях запрашивается пароль. Если он не запрашивает пароль, это означает, что в команде что-то не так. Пароль для debug.keystore - « android », а для выпуска вы должны ввести пароль, который вы установили при создании хранилища ключей .


3
Чтобы было понятно, пароль пуст. Просто нажмите <enter>, когда будет предложено.
Том Редман

Я сгенерировал хэш ключа, но не знаю, куда поместить этот ключ. Я работаю в Android Studio на Ubuntu.
Апурва

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

спасибо за спасение моей жизни. Я все время набираю свой пароль Mac для пароля хранилища ключей, и я понял, что это неправильно
Lucky Angelo

1
Даже запрос пароля не означает, что все в порядке (неправильный пароль, неправильный псевдоним ключа). keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>Сначала беги один, чтобы увидеть, все ли в порядке. Кроме того, при передаче по каналу keytool находится в неинтерактивном режиме и показывает пароль в виде простого текста при вводе. Поэтому вам лучше написать небольшой скрипт, который запускает команды отдельно.
Пьер

98

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

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.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);
        }
    }

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

это путь, по
которому

1
Это работает, если вы вызываете pContext.getPackageInfo. Или просто удалите его из функции и вызовите его в onCreate любого действия.
Дпедринья

1
Теперь это похоже на getPackageManager (). GetPackageInfo ([your-package_name], PackageManager.GET_SIGNATURES)
до

@Apurva Вы можете поместить его в Android SharedPreferences на случай дальнейшего использования этого.
Мэдди

49

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


Я запустил это в cmd, и он вывел очень длинный список символов, похожих на хэш, заканчивающийся знаком =, а затем ничего $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ .android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64
Сомк,

Звучит правильно. Только что проверил это на моей машине, было 28 символов для меня, просто чтобы дать вам идею. Теперь просто скопируйте его, и все в порядке. :)

мне не предложили использовать pharse android, хотя. Извините, я медленный?
Сомк

Если честно, я не уверен, почему тебя не попросили об этом. Но это звучит правильно для меня. Я имею в виду, что если бы вы сделали что-то не так, вместо этого должно появиться сообщение об ошибке. Просто скопируйте его и посмотрите, работает ли он. Вы можете проверить некоторые запросы графа с помощью Graph API Explorer . Выберите ваше приложение вверху и посмотрите, получите ли вы действительные результаты. Должно выплевывать ошибку, если что-то не так. Изменить: И ничего плохого в том, чтобы быть медленным. Мы не спешим. :)

24

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


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

19

Вы можете просто использовать однострочный JavaScript в консоли браузера, чтобы преобразовать шестнадцатеричный ключ карты в base64. Откройте консоль в последнем браузере (F12 в Windows), вставьте код и замените SHA-1,SHA-256 шестигранную карту, Google Play обеспечивает при Release Managment> App signing:

> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="

1
Вы спасатель, спасибо
Юсуф Адейемо

SHA-1 был один.
Траво

19

Вот полная информация (для Windows)

1. Загрузите OpenSSL 3-го или 4-го (с e будет работать лучше) на основе вашей системы 32-битной или 64-битной.

2. Извлеките загруженный почтовый индекс в каталоге C

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

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

Откройте файл Android Studio ~ файл ~ Структура проекта (Ctrl + Alt + Shift + S), выберите местоположение SDK на левой боковой панели, скопируйте местоположение JDK и добавьте / bin в него

Итак, окончательная локация JDK будет похожа C:\Program Files\Android\Android Studio\jre\bin

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

введите описание изображения здесь

теперь у вас есть местоположение OpenSSl и местоположение JDK

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

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

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

Для подписанного KeyHash построить следующую команду

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

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

НОТА

Если по какой-то причине, если она дает ошибку по какому-то пути, оберните этот путь в двойные кавычки. Кроме того, оболочка питания Windows не работала хорошо для меня, я использовал git bash (или использовал командную строку).

пример

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

1
Большое спасибо, это очень подробное руководство для начинающих!
Пабло Квеме

@TamimProduction попробуйте ту же процедуру, описанную выше, с k-версией openssl и посмотрите code.google.com/archive/p/openssl-for-windows/downloads
Манохар Редди

@TamimProduction, если вы введете неправильный пароль, он вернет неправильный ключ. также вы снова собрали apk после удаления хранилища ключей?
Манохар Редди

@TamimProduction скачать и установить приложение Facebook, войдите в приложение Facebook. откройте свое приложение и войдите в Facebook. Это даст вам ключевой хеш в приложении facebook, проверьте, совпадает ли он с вашим
Манохар Редди


16

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

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

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


1
Я заметил, что у моего ключевого хэша есть '_', который не разрешен FB. Чтобы использовать хеш, я должен был изменить его на '/'.
Абделалим Хассуна

Функция Facebook вернула мой ключ, так как -AAAAAAAA_AAAAAA-AAAAAAAAAAэто не разрешено Facebook, printHashKey вернул ключ в допустимом формате+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov

@GrafOrlov Как странно. Возможно, у них есть ошибка в какой-то новой версии FB SDK. Вы должны сообщить об этом им.
разработчик Android

9

Для Windows:

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

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

  1. Введите пароль: Android -> Нажмите Enter

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

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

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


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

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

8

Начиная с API 26, вы можете генерировать ваши HASH KEYS, используя следующий код в KOTLIN, без необходимости использования 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)
    }

}

введите описание изображения здесь


Вы имеете в виду, я class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
помещаю

6

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

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 вставил ПРАВИЛЬНЫЙ ключ в это исключение. Все, что вам нужно сделать, это скопировать его.


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

6

Если вы уже загрузили приложение в Play store, вы можете сгенерировать Hash Key следующим образом:

1) Перейти к Release Management здесь

2) Выберите Управление релизами -> Подписание приложения

3) Вы можете увидеть ключ SHA1 в шестнадцатеричном формате сертификата подписи приложения.


4) Скопируйте SHA1 в шестнадцатеричном формате и конвертируйте его в формат base64, вы можете использовать это ссылку, чтобы сделать это без SHA1: часть шестнадцатеричного числа.


5) Зайдите в консоль разработчика Facebook и добавьте ключ (после конвертации в base 64) в настройках -> basic -> key hashes.



3

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


Я не видел, что оригинальный ответ уже имеет ссылку openssl. Но это все еще полезно для системной переменной.
Сагитс

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

Конечно, вы уверены, что сгенерировали номер 28 длины? Если это так, то теперь вам нужно перейти на сайт разработчика Facebook (поиск в Google) и создать новое приложение, в разделе настроек вы можете добавить новое приложение для Android, туда вы вставляете свой ключ и имя своей деятельности (где находится код входа в систему). ). Об этом есть и урок на Facebook
sagits

Спасибо за быстрый ответ, скоро попробую
Апурва

3

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

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

А потом посмотрите на логи.

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

Решение основано здесь и здесь .


3

EASY WAY -> Не устанавливайте openssl -> ИСПОЛЬЗУЙТЕ GIT BASH!

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

Пароль по умолчанию "Android"

У большинства из нас установлен Git Bash, так что это мой любимый способ.


3

это также поможет новичкам.

просто добавив больше деталей к ответу @ coder_For_Life22.

Если этот ответ поможет, не забудьте поднять голос. это мотивирует нас.

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

для этого примера. Обратите внимание, что ключ хранится в «c: \ keystorekey \ new.jks».

1. Откройте эту страницу https://code.google.com/archive. / p / openssl-for-windows / downloads

2. загрузить 32- или 64-битный zip-файл в соответствии с вашей операционной системой Windows.

3. распакуйте скачанный файл куда угодно и запомните путь.

4. для этого примера мы считаем, что вы извлекли папку в папке загрузки. 5. Теперь на клавиатуре нажмите кнопку Windows + R. 6. это откроет окно запуска.

поэтому адрес файла будет «C: \ Users \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe»;





7. введите cmd и нажмите Ctrl + Shift + Enter .

8. Откроется командная строка с правами администратора.

9. здесь перейдите в папку bin Java:

если вы используете jre, предоставляемый Android Studio, вы найдете путь следующим образом:
a. открытая андроид студия.
б. файл-> структура проекта
c. на левой панели нажмите «Расположение SDK»
d. на правой панели ниже 'JDK location' находится ваш JRE-путь.
е. добавьте «\ bin» в конце этого пути, так как файл «keytool.exe», который нам нужен, находится внутри этой папки.
для этого примера я считаю,
«C: \ Program Files \ Java \ jre-10.0.2 \ bin»,
если вы установили 32 -разрядную версию Java, она будет находиться в
«C: \ Program Files (x86) \ Java \ jre-10.0.2 \ bin»
10. Теперь с указанными выше путями выполните команду следующим образом:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. Вам будет предложено ввести пароль, укажите пароль, который вы указали при создании ключа хранилища ключей.

    !!!!!! это даст вам ключ

ошибки: если вы получаете:
---
'keytool' не распознается как внутренняя или внешняя команда
---
это означает, что java установлен где-то еще.


3

шаг 1-> C: \ Program Files \ Java \ jdk1.6.0_43 \ bin>

Шаг 2-> keytool -list -v -keystore C: \ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

Вы получили значение SHA1, кликните по этой ссылке, чтобы преобразовать значение SHA1 в HASH KEY.

я на 100% уверен, что эта ссылка поможет вам



2

Вы можете получить все ваши отпечатки пальцев с 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) }
}

1

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

1

Просто запустите этот код в вашем OnCreateView или OnStart Actvity, и эта функция вернет вам хэш ключа разработки .

private String generateKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = (MessageDigest.getInstance("SHA"));
            md.update(signature.toByteArray());
            return new String(Base64.encode(md.digest(), 0));
        }
    }catch (Exception e) {
        Log.e("exception", e.toString());
    }
    return "key hash not found";
}

0

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

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

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


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

0

Вы можете использовать этот 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

@Elynad Это китайский: D
armnotstrong


0

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users ** Deepak **. android \ debug.keystore" | " C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | « C: \ Users \ Deepak \ ssl \ bin \ openssl» base64

2 Изменения в приведенной выше команде 1.Deepak === Заменить вашей системой. USERNAME 2.C: \ Users \ Deepak \ ssl === заменить ваш путь Open SSL

запустить эту команду и получить вывод, как это

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C: \ Users \ Deepak \ ssl \ bin \ openssl" base64 Введите пароль хранилища ключей: ****** ga0RGNY ****************** =


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.