Ключ для Android-приложения для Android

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

Solutions Collecting From Web of "Ключ для Android-приложения для Android"

Вот шаги,

  1. Загрузите openssl из кода Google (если у вас 64-разрядная машина, вы должны скачать openssl-0.9.8e X64 не последнюю версию)

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

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

  4. Определите путь keytool.exe и перейдите в командную строку dir / in и запустите эту команду в 1 строке,

    $ Keytool -exportcert -alias androiddebugkey -keystore "C: \ Documents and Settings \ Администратор.android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64

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

Для получения дополнительной информации посетите здесь

Чувак, вы можете скопировать этот код в любую деятельность. Он будет записывать в catlog хэш-ключ, который является отладочным ключом. Это легко, и это облегчение, чем использование SSL и так;)

PackageInfo info; try { info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } 

Вы можете удалить код, зная ключ;)

Я создал небольшой инструмент для Windows и Mac OS X. Просто вставьте файл хранилища ключей и получите хэш-ключ.

Если вы хотите файл debug.keystore по умолчанию, используйте псевдоним и пароль по умолчанию. Кроме того, используйте собственный файл хранилища и значения.

Проверьте это, загрузите версию Windows или загрузите версию Mac OS X (Dev-Host иногда может быть недоступен … поэтому, если ссылка сломана, PM мне, и я ее исправлю).

Надеюсь, это поможет вам, ребята …

31 декабря 2014 г. – EDIT: Изменен хост AFH. Пожалуйста, дайте мне знать, если ссылки сломаны

21 ноября 2013 г. – EDIT:

Когда пользователи запросили, я добавил местоположение хранилища ключей по умолчанию и кнопку DONATE. Не стесняйтесь использовать его, если я помог вам. 🙂

СкриншотСнимок экрана 2

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

Начните с загрузки openssl для Windows из Google.

 C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt 

После выполнения этих команд допустимый хэш сохраняется в файле base64.txt. Скопируйте и вставьте это в свои настройки приложения на Facebook.

Это то, что дано на официальной странице Facebook :

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

Позвольте мне разбить эту команду на фрагменты.

  1. Найдите "keytool.exe" . Вы можете выполнить поиск на диске C :. Вы можете найти его в "java jdk" или "java jre" . Если вы установили несколько версий, выберите любой.

  2. Откройте приглашение CMD и перейдите в вышеуказанный каталог, где вы нашли "keytool.exe" .

    Закрепите «exe» и вставьте указанную выше команду на странице Facebook.

  3. Вы получите ошибку при вводе этого, что OpenSSL не распознается, как в команде ввода вывода. Решение. Загрузите «Openssl» из OpenSSL (если у вас 64-разрядная машина, вы должны скачать openssl-0.9.8e X64 ). Извлеките и сохраните его в любом месте … Я сохранил его на диске C: в папке OpenSSl

  4. Замените openssl в приведенной выше команде, в которой вы получили сообщение об ошибке OpenSSL с «C: \ OpenSSL \ bin \ openssl» в обоих местах после канала, «|».

  5. При запросе пароля введите android .

И вы получите свой хэш-ключ. Дополнительные шаги см. На странице Facebook.

Чтобы получить хэш-код для Android-ключа, выполните следующие действия:

  1. Загрузите OpenSSL для Windows здесь
  2. Теперь разархивируйте диск C
  3. Откройте приглашение CMD
  4. Тип cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. Затем введите только keytool -export -alias myAlias -keystore C:\Users\ ваше имя пользователя \.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e \.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. Готово

Добавьте этот код в onCreate своей деятельности:

 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

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

Самое простое решение, которое я нашел, это:

  • Открыть журнал журнала
  • Попробуйте Facebook и Android SDK
  • Найдите строку в журнале, которая выглядит так:

     04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your application settings. Check your application settings at http://www.facebook.com/developers 
  • Скопируйте «abcdefgHIJKLMN + OPqrstuvwzyz» и вставьте его в область Android Хейш Facebook.

Я сделал это для ОС Linux и ОС Windows :

Linux:

  • Скачать Openssl
  • Открытый терминал
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

Пожалуйста, измените имя псевдонима и Keystore с вашим путем как ваше требование.

Терминал запросит пароль в Keystore. Вы должны предоставить пароль для того же Keystore .

Итак, наконец, вы получите Release Hashkey .

Окна:

Шаги для выпуска Hashkey :

  • Скачать Openssl (Скачать отсюда ), я загрузил для 64-битной ОС, вы можете найти больше здесь
  • Извлечение загруженного zip-файла только в C: \
  • Откройте командную строку
  • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

Пожалуйста, измените имя псевдонима и Keystore с вашим путем как ваше требование.

Заметка:

Пожалуйста, разместите свои данные там, где я отметил между ** **.

Терминал запросит пароль в Keystore. Вы должны предоставить пароль для того же Keystore .

Итак, наконец, вы получите Release Hashkey .

Готово

Скачайте openSSL -> Install it -> он обычно будет устанавливать в 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) 

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

  • Скачать openSSL для windows здесь вы можете найти 64-битную и 32-битную здесь

  • Извлечь загруженный файл

  • Создать имя папки openSSL на диске C
  • Скопируйте все извлеченные элементы в папку openSSL (bin, include, lib, openssl.cnf)
  • Получить хранилище отладки android debug, местоположение по умолчанию будет

C: \ Users \ имя пользователя \ .android \ debug.keystore

  • Теперь получите свою командную строку и вставьте этот код

Keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 -binary | "C: \ openSSL \ bin \ openssl" base64

  • Нажмите enter, и вы получите 28-значный код ключа

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

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

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

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

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

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

$ Keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | Openssl sha1 -binary | Openssl base64

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

Официальная документация на сайте разработчика 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) { } 
  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. Теперь откройте журнал кота и выполните поиск с помощью «KeyHash» и скопируйте хеш-ключ.

  2. Вы создаете ключ Hash, который вы можете удалить эту функцию.

 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 

Для 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 

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

Чтобы создать хэш ключа release, запустите следующую команду на Mac или Windows, заменив ваш псевдоним ключа выпуска и путь к хранилищу ключей.

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

 keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 

Эта команда должна генерировать 28 строк characher. Помните, что COPY и PASTE этот релиз Key Hash в настройках Android вашего Android-приложения Facebook.

Изображение: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png

См. Также: https://developers.facebook.com/docs/android/getting-started#release-key-hash и http://note.taable.com.

Для 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) { } } 

Простейшее решение:

  1. Не добавляйте хэш-ключ, реализуйте все остальное
  2. Когда нажимается логин facebook, вы получите сообщение об ошибке «Недопустимый хэш ключа». Хэш хэша «xxx» не соответствует ни одному сохраненному ключу … »
  3. Откройте панель инструментов приложения facebook и добавьте хэш ххх ххх из «+» = »(« ххх »)

Лучший подход – использовать следующий код:

 private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } 

Но я был так расстроен тем фактом, что нет простого инструмента для создания приложения HashKey для Facebook. Каждый раз, когда мне приходилось играть с Openssl и Keytool или использовать код, чтобы получить хэш от подписи …

Поэтому я написал простой KeyGenTool, который сделает это для вас: -> KeyGenTool в Google Play <-

Наслаждаться 🙂

 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } и import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } 

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

На ubuntu, он ворует в моем компьютере

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

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

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

См. Ниже.

 C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64 

Затем нажмите Enter – он попросит вас ввести пароль, а затем введите пароль своего хранилища ключей, а не Android.

Круто.

Для людей, которые не знают, как кодировать, ключевой генный инструмент AivarsDa для google – это самое легкое решение. Просто получите хеш-ключ и скопируйте его в настройки приложения facebook. Акция на инструменте keygen делает мое приложение крахом на моем телефоне, поэтому я просто вручную напечатал его в блокноте и скопировал его в fb. Наконец, прошлый этот шаг после дней разочарования

Используйте эту команду после сохранения ssl на диске c и в папке openssl.

 keytool -exportcert -alias androiddebugkey -keystore "C:\Users\AJAY SUNDRIYAL.android\debug.keystore" | openssl sha1 -binary | openssl base64