Я работаю над Android-приложением, в котором хочу интегрировать Facebook функция публикации. Я скачал Android-SDK для Android, и я получил readme.md(текстовый файл), в котором он упоминается для генерации ключевой хэш для Android. Как его создать?
Ключ для Android-приложения для Android
Ответ 1
Вот шаги -
-
Загрузите openssl из код Google (если у вас 64-разрядная машина, вы должны скачать openssl-0.9.8e X64 не последнюю версию)
-
Извлеките его. создайте папку-OpenSSL в C:/и скопируйте извлеченный код здесь.
-
определить путь к файлу debug.keystore. Если u не нашел, выполните поиск в C:/и используйте Путь в команде на следующем шаге.
-
определите путь 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
- он попросит пароль, поставьте android
- это все. u получит ключ-хэш
Для получения дополнительной информации посетите здесь
Ответ 2
Вы можете использовать этот код в любом действии. Он будет записывать hashkey в logcat, который является отладочным ключом. Это легко, и это облегчает использование 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());
}
Вы можете удалить код, зная ключ;)
Ответ 3
Я создал небольшой инструмент для Windows и Mac OS X. Просто вставьте файл хранилища ключей и получите хэш-ключ.
Если вы хотите файл debug.keystore по умолчанию, используйте псевдоним и пароль по умолчанию. Else, используйте собственный файл хранилища и значения.
Проверьте, скачать версию Windows или скачать версию Mac OS X (Dev-Host иногда может быть недоступен... поэтому, если ссылка сломана, PM меня и я исправлю).
Я надеюсь, что вам помогут ребята...
31 декабря 2014 года - EDIT: Изменен хост AFH. Пожалуйста, дайте мне знать, если ссылки сломаны
21 ноября 2013 г. - EDIT:
Когда пользователи запросили, я добавил местоположение хранилища ключей по умолчанию и кнопку DONATE. Не стесняйтесь использовать его, если я помог вам.:)
Ответ 4
В настоящее время инструкции Facebook Android Tutorial не работают в 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.
Ответ 5
Это то, что дано на официальной странице Facebook:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Позвольте мне разбить эту команду на фрагменты.
-
Найдите
"keytool.exe"
. Вы можете выполнить поиск на диске C:. Вы можете найти его в"java jdk"
или"java jre"
. Если вы установили несколько версий, выберите любой. -
Откройте приглашение CMD и перейдите в каталог, где вы нашли
"keytool.exe"
.Закрепите "exe" и вставьте указанную выше команду на странице Facebook.
-
Вы получите ошибку при вводе этого, что OpenSSL не распознается, как в команде ввода вывода. Решение: Скачайте "Openssl" из OpenSSL (если у вас есть 64-разрядная машина, вы должны скачать openssl-0.9.8e X64). Извлеките и сохраните его в любом месте... Я сохранил его на диске C: в папке
OpenSSl
-
Замените openssl в приведенной выше команде, в которой вы получили сообщение об ошибке OpenSSL с "C:\OpenSSL\bin\openssl" в обоих местах после канала, "|".
-
При запросе пароля введите
android
.
И вы получите свой хэш-ключ. Дальнейшие шаги см. на странице Facebook.
Ответ 6
Добавьте этот код в onCreate
своей активности, он напечатает хэш под тегом KeyHash в вашем logCat
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) {
}
Вы можете добавить несколько хэш-ключей для своей учетной записи, поэтому, если вы выполняете отладки , не забудьте запустить это снова в режиме выпуска.
Ответ 7
Чтобы получить хэш-код ключа Android, выполните следующие действия:
- Загрузить OpenSSL для Windows здесь
- Теперь распакуйте диск C.
- Откройте приглашение CMD
- Тип
cd C:\Program Files\Java\jdk1.6.0_26\bin
- Затем введите только
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
- Готово
Ответ 8
Самое простое решение, которое я нашел, следующее:
- Открыть журнал Cat
- Попробуйте воспользоваться 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 Android.
Ответ 9
Я сделал таким образом для ОС Linux и ОС Windows:
Linux:
- Скачать Openssl
- Открытый терминал
-
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
Пожалуйста, измените Alias Name и 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
Пожалуйста, измените Alias Name и Keystore, указав в нем путь.
Замечания:
Пожалуйста, укажите свои данные там, где я отметил ** **.Терминал будет запрашивать пароль от Keystore. Вы должны предоставить пароль для того же хранилища ключей.
Итак, наконец, вы получите Release Hashkey.
Готово
Ответ 10
-
скачать openSSL для окон здесь вы можете найти здесь 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-значный код ключа
Ответ 11
Вам нужно создать хранилище ключей 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.
Ответ 12
Загрузите openSSL → Установите его → , он обычно устанавливается в C:\OpenSSL
затем откройте cmd и введите
cd../../Program Files (Enter)
java (Enter)
dir (Enter)
cd jdk1.6.0_17 (varies with jdk versions) (Enter)
чтобы проверить версию jdk, перейдите в C:/программные файлы /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)
Он попросит вас ввести пароль, который является андроидом.
Ответ 13
-
Просто откройте файл основной активности и создайте ниже упомянутую функцию:
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 Запустите приложение, это создаст хэш-код для вашего приложения.
-
Теперь откройте журнал cat и выполните поиск с помощью "KeyHash" и скопируйте хеш-ключ.
-
Вы создаете клавишу Hash, вы можете удалить эту функцию.
Ответ 14
1) Создайте ключ для подписи приложения и запомните псевдоним.
2) Установите OpenSSL.
3) Поместите папку bin в OpenSSL в свой путь.
4) Следуйте инструкциям, описанным в разделе "Настройка единого входа" на странице FB-Android-SDK и создайте свой хэш-ключ. Убедитесь, что вы указали правильное имя псевдонима и имя файла хранилища.
5) Создайте приложение на Facebok, а на вкладке "Мобильные устройства" введите этот хэш-ключ.
Ответ 15
Официальная документация на сайт разработчика 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) {
}
Ответ 16
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
Ответ 17
Для 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
ПРИМЕЧАНИЕ. Убедитесь, что в обоих случаях он должен запросить пароль. Если он не запрашивает пароль, это означает, что в команде что-то не так.
Ответ 18
Для приложения для 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) {
}
}
Ответ 19
Как ответил по аналогичной проблеме, я нашел, что это работает для меня:
- Скопируйте файл
apkname.apk
, который хотите узнать хэш из папки "Java\jdk1.7.0_79\bin" - Запустите эту команду
keytool -list -printcert -jarfile apkname.apk
- Скопируйте значение
SHA1
и преобразуйте его, используя этот сайт - Используйте преобразованное значение Keyhash (например, zaHqo1xcaPv6CmvlWnJk3SaNRIQ =)
Ответ 20
Чтобы создать хэш вашего ключа release, запустите следующую команду на Mac или Windows, заменив ваш псевдоним ключа выпуска и путь к хранилищу ключей.
В Windows используйте:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Эта команда должна генерировать 28 строк characher. Помните, что КОПИРОВАТЬ и PASTE этот ключ Release Hash в ваших настройках Android App Android Android.
image: 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
Ответ 21
Используйте это для печати ключа хэша в kotlin
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
Ответ 22
Простейшее решение:
- Не добавляйте хэш-ключ, реализуйте все остальное
- При нажатии кнопки facebook вы получите сообщение об ошибке "Недопустимый хэш ключа". Хэш хэша "xxx" не соответствует ни одному сохраненному ключу... "
- Откройте панель инструментов приложения facebook и добавьте хэш "xxx =" ( "xxx" хэш из знака ошибки + "=" )
Ответ 23
Во-первых, чтобы генерировать хэш ключей на вашем локальном компьютере, запустите утилиту Java keytool (которая должна быть на вашем пути к консоли) против хранилища отладки Android. Это по умолчанию находится в вашем домашнем каталоге .android).
на ubuntu, он просыпается на моем компьютере
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Ответ 24
Я сделал небольшую ошибку, которую следует иметь в виду. Если вы используете свое хранилище ключей, укажите имя псевдонима, а не 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.
Круто.
Ответ 25
Лучший подход - использовать следующий код:
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 < -
Наслаждайтесь:)
Ответ 26
Используйте эту команду после сохранения открытого ssl в c-диске и в папке openssl.
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\AJAY SUNDRIYAL.android\debug.keystore" | openssl sha1 -binary | openssl base64
Ответ 27
Вы можете получить хеш ключа от ключа SHA-1. Это очень просто, вам нужно получить ключ SHA-1 (подписанный APK) в магазине Play, проверьте изображение ниже.
Теперь скопируйте этот ключ SHA-1 и вставьте его на этом веб-сайте. http://tomeko.net также проверьте изображение ниже, чтобы получить ключ хэша.
Ответ 28
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());
}
}
});
}
}
Ответ 29
Для людей, которые не знают, как закодировать, инструмент генерации ключа AivarsDa в google play - самое легкое решение. просто получите хэш-ключ и скопируйте его в настройки приложения facebook. Доля в инструменте keygen делает мое приложение аварийным сбой на моем телефоне, поэтому я просто набрал его вручную в блокноте и скопировал его в fb. Наконец, после этого шага после дней разочарования
Ответ 30
Для Windows: -
1.Download openssl(openssl-for-windows)
2.Copy and Paste openssl folder into c drive.
3.C:\Android\.android\debug.keystore => Debug Keystore path
4.C:\Program Files\Java\jdk1.8.0_181 => JDK PATH
5.Go to jdkpath=>Enter the below command. (keytool inside Debug keystore path)
keytool -exportcert -alias androiddebugkey -keystore C:\Android.android\debug.keystore | "C:\openSSL\bin\openssl" sha1 -binary | "C:\openSSL\bin\openssl" base64