Как сделать хеш ключ в фейсбук

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

Чтобы интегрировать приложение Android с Facebook, необходимо сгенерировать ключевой хеш.

Здесь вопрос не в том, как его создать, а в том, зачем это нужно. Facebook объясняет, что ему нужен хэш ключа Android, чтобы гарантировать аутентичность между Facebook и приложением. Однако мне непонятно, зачем Facebook нужен уникальный ключевой хеш для среды разработки?

А что, если для приложения есть несколько разработчиков, каждый со своей собственной средой разработки?

Ответы 1

Это довольно распространенная практика, которая используется для защиты от злоупотребления ключом API, даже если он используется в среде разработки. Ключ API можно довольно легко извлечь из APK, а SDK API может аутентифицировать приложение на основе его ключа подписи.

Рекомендуется поделиться своим ключом подписи разработки для приложения со всеми разработчиками, работающими над приложением. Это легко сделать, проверив ключ подписи вместе с вашим проектом. Ключ подписи, который Android Studio создает для вас, находится в $HOME/.android/debug.keystore . Вы можете скопировать этот ключ (или создать новый) в свой проект и включить его в конфигурационный файл build.gradle . например:

Это решает проблему использования одного и того же ключа facebook для всех в среде разработки. Кроме того, он позволяет любому члену команды разработчиков создавать и распространять отладочную версию приложения, которая всегда будет подписана одним и тем же ключом.

Другие вопросы по теме

Похожие вопросы

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

Переопределение поля kotlin и десериализация gson невозможно создать исключение класса преобразователя

Находите ответы на сложные технические вопросы по программированию, с которыми сталкиваются инженеры по всему миру в своей ежедневной практике на сайте RedDeveloper.

Почему существует необходимость создавать разные хэши ключей для Release и Development ?

Если я еще не опубликовал свое приложение в PlayStore. Могу ли я использовать Release Key вместо использования Development key ?

Если я использую приложение в PlayStore, могу ли я использовать клавишу Development ?

Что мне следует помещать в YOUR_RELEASE_KEY_ALIAS и YOUR_RELEASE_KEY_PATH ? Может ли кто-нибудь предоставить образцы, пожалуйста?

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

Дополнительный вопрос, который не связан

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

Что делает эта кнопка Single Sign On?

В: Что делают эти хэши ключей?

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

Подписывание ваших приложений

  • Android требует, чтобы все приложения подписывались цифровой подписью с сертификатом
    прежде чем они смогут быть установлены. Android использует этот сертификат для
    определить автора приложения, а сертификат не требуется
    подписываться центром сертификации. Приложения для Android часто используют
    самоподписанные сертификаты. Разработчик приложения имеет сертификат
    закрытый ключ.

Обзор подписей

  • Вы можете подписать приложение в режиме отладки или выпуска. Вы подписываете свое приложение в
    режим отладки во время разработки и в режиме выпуска, когда вы готовы
    для распространения вашего приложения. Android SDK генерирует сертификат для
    подписывать приложения в режиме отладки. Чтобы подписывать приложения в режиме деблокирования, вам необходимо
    сгенерируйте собственный сертификат. Для получения дополнительной информации вы можете
    посмотрите, какие ключи находятся в

В: Почему существует необходимость создавать разные хэши ключей для Release и Development?

Как вы знаете, андроид использует разные Keystores как для разработки, так и для выпуска, поскольку два хранилища ключей различны во всех аспектах, оба они имеют разные отпечатки пальцев и хеши SHA-1, поэтому они трактуются совершенно иначе.

В: Если я еще не опубликовал свое приложение в PlayStore. Можно ли использовать ключ Release вместо использования ключа разработки?

Да, вы можете использовать ключ освобождения для целей генерации APK, но если вы находитесь в режиме отладки, этот ключ вообще не работает.

В: Если я использую свое приложение в PlayStore, могу ли я продолжать использовать ключ разработки?

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

В: Что я должен поместить в YOUR_RELEASE_KEY_ALIAS и YOUR_RELEASE_KEY_PATH? Может ли кто-нибудь предоставить образцы, пожалуйста?

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

прилагается изображение, если вас беспокоят клавиши facebook

В: Почему это происходит, когда мы разрабатываем для iOS, эти ключевые хэши не требовались?

Это связано с требованиями платформы. Не обязательно, чтобы на одной платформе требовалась и другая платформа.

Единый вход

Единый вход – это расширение (и замена) таких сервисов, как Facebook Connect, подключение к сторонним социальным приложениям и службам. Если вы уже вошли в систему Facebook на своем мобильном телефоне, вы сможете войти в другие приложения, используя учетные данные Facebook.

Вот код для генерации отпечатка fb.

Что делают эти хэши ключей?

  • Для Android требуется, чтобы все приложения подписывались цифровой подписью с сертификатом до их установки. Android использует этот сертификат для идентификации автора приложения, и сертификат не должен подписываться центром сертификации. поэтому оба ключа использовались для цифровой подписки вашего приложения.

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

  • Вы подписываете свое приложение в режиме отладки Development key во время разработки и release key , когда вы готовы распространять свое приложение в Google Play.

Если я еще не опубликовал свое приложение в PlayStore. Можно ли использовать ключ Release вместо использования ключа разработки?

  • вам нужно использовать release key в этот момент

Если я использую свое приложение в PlayStore, могу ли я продолжать использовать ключ разработки?

  • Google Play не позволяет загружать APK с помощью отладочного ключа, поэтому вам необходимо использовать release key

Что нужно поместить в YOUR_RELEASE_KEY_ALIAS и YOUR_RELEASE_KEY_PATH? Может ли кто-нибудь предоставить образцы, пожалуйста?

  • YOUR_RELEASE_KEY_ALIAS: используйте любое имя, которое вам нравится (просто чтобы запомнить имя хранилища ключей)
  • YOUR_RELEASE_KEY_PATH: путь, по которому вы хотите сохранить файл хранилища ключей (для использования в будущем)

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

Почему это, когда мы разрабатываем для iOS, эти ключевые хэши не требовались?

  • Разработчик ios также требует, чтобы эти ключи команды разработчиков Apple генерировали сертификат для разработки и выпуска. которые мы должны использовать в процессе разработки и выпуска

это, прежде всего, о приложении android и Google play для FACEBOOK , вам нужно создать разные key hash для разработки и обновления

Хэши ключей разработки. Это только для тестирования, пока вы не опубликуете игровой магазин.
Хэши Release Key – это оригинальный хеш-ключ без этого хэша ключа. Facebook не работает в магазине воспроизведения.

Нет необходимости создавать 2 haseh-ключа, если вы создаете Хранение ключей ключей, а затем не требуется создавать Хэши ключей разработки

Facebook использует хэш ключа для аутентификации взаимодействия между вашим приложением и приложением Facebook.

Если вы запускаете приложения, которые используют Facebook Login, вам нужно добавить свой хэш-код для Android-разработки в свой профиль разработчика Facebook.
Для версии вашего приложения, которое вы выпускаете для вас, также необходимо сгенерировать и установить хэширование ключей Release.

В учебнике по Facebook для Android нам предлагается использовать следующий код для создания ключевого хэша:

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

Это точный код для использования во всех ситуациях? Например, вместо того, ~/.android/debug.keystore чтобы что-то вроде C:/folderone/foldertwo/.android/debug.keystore ?

Как видите, я не уверен, нужны ли кавычки или нет, нужны полные пути или нет!

Может ли кто-нибудь привести реальный пример?


в вашей основной деятельности :-) Это единственное решение, которое у меня работает для Android SDK 3.0


В том числе необходимо: import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.util.Base64; import android.util.Log;

Вы можете создать таким образом

Введите пароль хранилища ключей: android

MacOS: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64 Пароль: android

В eclipse, окно -> настройки -> Android -> сборка -> хранилище ключей отладки по умолчанию , скопируйте путь, чтобы заменить ~/.android/debug.keystore

При появлении ошибки в журнале при попытке войти в Facebook ищите что-то похожее на:


У меня была та же проблема, я трачу пару часов, чтобы найти решение, но на самом деле SDK Facebook предоставляет решение сам по себе.

в классе DialogListener я модифицировал метод onFacebookError:

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

keytool -exportcert -alias androiddebugkey -keystore "путь к отладочному хранилищу ключей" | openssl sha1 -binary | openssl base64

если вы не настроили переменные среды для open ssl и java sdk, чем поместите путь к папке bin jdk вместо keytool и ваш путь openssl вместо openssl и не забудьте поставить двойные кавычки для вашего пути

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

Ответы

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

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

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

определите ваш путь keytool.exe и перейдите в этот каталог / в командной строке и запустите эту команду в 1 строке -

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

Biraj Zalavadia picture

Для Linux и Mac

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

Вы найдете debug.keystore в папке ".android". Скопируйте его, вставьте на рабочий стол и выполните указанную выше команду.

Для выпуска Build

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

user658042 picture

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

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

Обратите внимание, что аргумент после -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 для сертификата отладки. Если пароль правильный, консоль печатает хэш (несколько случайных символов и чисел).

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

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

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

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

Manohar Reddy picture

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

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

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

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

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

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

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

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

enter image description here

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

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

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

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

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

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

вот и все, вам будет предоставлен Key Hash, просто скопируйте его и используйте

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

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

ПРИМЕЧАНИЕ

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

Метод хеширования ключей Facebook, liunx, windows и android

Генерация среды Linux более удобна, нужно только настроить среду java, интегрирована система openssl.
Создать команду: keytool -exportcert -alias псевдоним -keystore файл подписи | openssl sha1 -binary | openssl base64
Предлагает ввести пароль для подписи, ввести пароль и сгенерировать хэш ключа facebook

Windows необходимо сначала установить инструмент openssl,Нажмите, чтобы загрузить инструмент (openssl), Разархивируйте файл, войдите в каталог bin и скопируйте сюда файл подписи.
Создать команду: keytool -exportcert -alias псевдоним -keystore файл подписи | openssl sha1 -binary | openssl base64
Предлагает ввести пароль для подписи, ввести пароль и сгенерировать хэш ключа facebook

android использует код для получения хэша ключа facebook, если будет предложено, что base64 не может быть найден,Нажмите, чтобы загрузить пакет base64_jar, Создайте пакет выпуска с соответствующей подписью и распечатайте хэш ключа facebook. Получите код следующим образом, скопируйте и используйте напрямую:

Ключевые хэши, генерируемые кодами Linux и Android, одинаковы. Ключевые хэши, сгенерированные окнами, не совпадают, и причина требует дальнейшего изучения. Рекомендуется использовать ключи, сгенерированные кодами linux и android.

Читайте также: