Facebook Android Генерирует Хэш Ключа
пытаясь создать приложение для android с интеграцией Facebook, я добрался до той части в документах, где вам нужно создать ключевой хэш-файл, он указывает, чтобы запустить следующий код
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
| openssl sha1 -binary
| openssl base64
когда я запускаю это в моем терминале я получаю сообщение об ошибке для хранилища ключей подделаны или пароль был неверным,
Я просто хочу создать свой ключевой хэш
может ли кто-нибудь указать мне в правильном направлении?
20 ответов:
удалите сертификат отладки под~/.андроид/отладки.keystore (на Linux и Mac OS X); каталог-это что-то вроде %USERHOME%/.android на Windows.
плагин Eclipse должен затем генерировать новый сертификат при следующей попытке построить пакет отладки.
Дайте мне знать, если это работает.
для того, чтобы создать хэш ключа вам нужно выполнить несколько простых шагов.
1) Загрузите Openssl из: здесь.
2) Сделать openssl на C диск
3) извлеките Zip-файлы в этот openssl папка создана в C диск.
4) скопируйте файл "отладка".хранилища ключей С .android папка в моем случае (C:\Users\SYSTEM.Android) и вставить в Папка JDK bin в моем случае (C:\Program Files\Java\jdk1.6. 0_05\bin)
5) открыть командную строку и дать путь к папке JDK Bin в моем случае (C:\Program Files\Java\jdk1.6.0_05\bin).
6) скопируйте следующий код и нажмите enter
ключей -exportcert -псевдоним androiddebugkey -хранилище ключей, для отладки.хранилище ключей > c:\openssl\bin\debug.txt
7) Теперь вам нужно введите пароль пароль = андроид.
8) Если вы видите в openssl папка Bin, вы получите файл с именем "отладка".txt
9) Теперь вы можете перезапустить командную строку или работать с существующими командной строке
10) вернитесь на диск C и дайте путь openssl Bin папку
11) скопируйте следующий код и вставьте
openssl sha1-бинарная отладка.формат txt> debug_sha.txt
12) вы получите debug_sha.txt в папке openssl bin
13) снова скопируйте следующий код и вставьте
openssl base64-in debug_sha.txt > debug_base64.txt
14) вы получите debug_base64.txt в папке openssl bin
15) откройте debug_base64.txt файл вот ваш ключевой хэш.
обновленный ответ (генерация через код) более простой метод:
по моему опыту, openssl всегда был хлопотным, я попробовал второй метод, предложенный facebook. И это замечательно. Это лучший способ получить хэш-ключ.
второй вариант-распечатать ключевой хэш, отправленный на Facebook, и использовать это значение. Внесите следующие изменения в метод onCreate () в вашей основной деятельности:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.loginhowto", 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) { } ...other operations }//end of onCreateзаменить com.фейсбук.образцы.loginhowto с вашим собственным именем пакета (имя пакета в Манифесте.XML.)
официальная ссылка -https://developers.facebook.com/docs/android/login-with-facebook/ (см. Нижнюю часть страницы)
старый ответ (генерация Keyhash с помощью openssl)
- для создания подписи вам нужно openssl установлен на вашем компьютере. Если у вас нет одной загрузки openssl от здесь
- В C: Создать
opensslпапку- извлеките содержимое загруженного файла OpenSSL zip в (то есть в моем случае это C:\Users\Anhsirk , вам просто нужно изменить это для вашей учетной записи пользователя.
дайте пароль как android
. Если он не запрашивает пароль, Ваш путь к хранилищу ключей неправильный.
если все работает нормально, он должен дать вам хэш-ключ ниже.
правильный ключ можно получить из самого приложения, добавив следующий код, чтобы поднять правильный хэш ключа (в случае Facebook SDK 3.0 и далее, это работает)
try { PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("MY KEY HASH:", sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { }заменить com.пакет.mypackage с вашим именем пакета
I. создать ключ хэш отладки для facebook
добавить код, чтобы распечатать хэш ключа для facebook
try { PackageInfo info = getPackageManager().getPackageInfo( "com.google.shoppingvn", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { }второй. Создать ключ хэш-релиз для facebook
- скачать openssl-0.9. 8e_X64
- создайте папку openssl на диске C
- извлечение Zip-файлов в папку openssl
- Пуск - > Выполнить: cmd (нажмите enter)
- (нажать) компакт-диск C:\Program Файлы\Java\jdk1.6.0_45\bin. Примечание: C:\Program Files\Java\jdk1.6. 0_45\bin: путь к папке jdk на вашем компьютере
(нажмите) keytool-exportcert-alias GCI-keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1-двоичный | C:\openssl\bin\openssl base64. Примечание: D:\folder\keystorerelease: это путь к вашему keystorerelease
введите пароль хранилища ключей:это пароль при регистрации keystorerelease.
вы есть хэш ключа: jDehABCDIQEDWAYz5Ow4sjsxLSw=войти в facebook. Доступ к управлению приложениями. Вставьте хэш ключа в свое приложение developers.facebook.com
САМОЕ ПРОСТОЕ РЕШЕНИЕ ДЛЯ ЭТОЙ ПРОБЛЕМЫ:
У меня была эта проблема в течение двух месяцев. Мои ключевые хэши были pyling до 9. Сегодня я наконец нашел простое решение:
Шаг 1:
установите Facebook sdk, загруженный со страницы разработчика facebook на вашем телефоне. Не устанавливайте обычное приложение facebook. Убедитесь, что вы можете войти в facebook. Затем выйдите из системы.
шаг 2:
экспортируйте свое приложение с помощью своего окончательного ключа выпуска в качестве apk, как и при загрузке его в playstore.
Шаг 3:
поместите файл Apk на свой телефон через usb-кабель или USB-накопитель.
Шаг 4:
установите приложение, используя файловый менеджер:пример
Шаг 5:
запустите приложение и попробуйте войти в систему с facebook. Диалог будет откройте и скажите: "ключ YOURHASHKEY не найден в консоли разработчика facebook"
Шаг 6:
записать ключ.
Шаг 7.
поместите его в консоль разработчика facebook и сохраните. Теперь вы закончили. Любой, кто загружает ваше приложение, опубликованное с ранее использованным хранилищем ключей, может войти в facebook.
наслаждайтесь
Если вы выпускаете, используйте хранилище ключей, которое вы использовали для экспорта вашего приложения, а не отладку.хранилище ключей.
наконец :)
вот моя история :
добавить этот код в основной вид деятельности, после установки макета.
try { PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("MY KEY HASH:", sign); //textInstructionsOrLink = (TextView)findViewById(R.id.textstring); //textInstructionsOrLink.setText(sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { Log.d("nope","nope"); } catch (NoSuchAlgorithmException e) { }измените имя проекта на имя вашего пакета!
- подпишите свое приложение (Android Tools->Export Signed Application)
- в вашей основной деятельности, где вы вставляете код из 2 варианта, в вашем макете создать TextView с идентификатором textstring
- раскомментируйте две строки, что ваш знак код будет установлен в TextView 6 Wuolia, у вас есть свой хэш , установите приложение на свой телефон!!! и проверьте свой хэш-ключ!
- теперь , когда он виден, перейдите в созданное приложение facebook и добавьте его в [ключевые хэши]
- обратите внимание, что ваше имя пакета должно быть таким же, как на facebook [имя пакета] в разделе [Ключевые хэши]
- хорошего дня :)
одна линия решение для создания для facebook
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
для того, чтобы создать хэш ключа выпуска вам нужно выполнить несколько простых шагов.
1) Скачать Openssl
2) создайте папку openssl на диске C
3) извлеките Zip-файлы в эту папку openssl, созданную на диске C.
4) скопируйте файл отладки.из хранилища ключей .папка android в моем случае (C:\Users\SYSTEM.android) и вставить в папку JDK bin в моем случае (C:\Program Files\Java\jdk1.6. 0_05\bin)
5) Откройте командную подскажите и укажите путь к папке JDK Bin в моем случае (C:\Program Files\Java\jdk1.7.0_40\bin).
6) скопируйте следующий код и нажмите enter
keytool-exportcert-alias abcd-keystore D:\Projects\MyAppFolder\keystore.txt | C:\openssl\bin\openssl sha1-двоичный | C:\openssl\bin\openssl base64 экс - ключей -exportcert -псевдоним (ваш петь apk псевдоним введите здесь нравится мой знак имени АПК, имя Алиан является АВСD )-хранилище "подписал АПК создается хранилище apth сюда входящий" | "корзины OpenSSL путь к папке введите здесь" в формате SHA1 - двоичный | "корзины OpenSSL путь к папке введите здесь" в base64
7) Теперь вам нужно ввести пароль, пароль = (введите свой пароль хранилища ключей здесь)
8) вы получили keystore, которые используются для выпуска хэша ключа приложения
хотя эта тема старая, но я хотел бы поделиться своим опытом (недавно начал работать с facebook), который мне кажется прямым:
- скачать openssl по ссылке ниже: https://code.google.com/p/openssl-for-windows/downloads/list
- распакуйте его на локальный диск (например, C:\openssl)
чтобы получить ключ разработки для интеграции facebook, используйте следующую команду из командной строки в windows:
keytool-exportcert-псевдоним androiddebugkey-keystore %HOMEPATH%.android\debug.keystore | "C:\openssl\bin\openssl.exe " sha1-binary | "C:\openssl\bin\openssl.exe " base64
внимание!: пожалуйста, замените путь для OpenSSL.exe (в данном примере это "C:\openssl\bin\openssl.exe") с вашим собственным путем установки.
- он запросит пароль, например,
ввод ключей пароль: андроид
введите android в качестве пароля, как показано выше.
вот оно! Вам будет предоставлен ключ длиной 28 символов. Ура!
используйте ту же процедуру, чтобы получить ключ от выхода. Просто замените команду на следующую и используйте свой псевдоним ключа выпуска.
keytool-exportcert-псевдоним YOUR_RELEASE_KEY_ALIAS-keystore YOUR_RELEASE_KEY_PATH | " путь для openssl.exe " sha1-binary / openssl base64
отличный пост в блоге на эту тему
извлечение хэша ключа из .ключевые Р12
- откройте терминал или командную строку и перейдите в папку, где ваш .ключевые P12-это.
- введите: "keytool-V-list-keystore mycert.p12-тип магазина pkcs12 " где mycert.p12-это имя вашего файла .ключевые Р12.
- введите пароль для хранилища ключей (тот, который вы использовали при экспорте .ключ Р12). 4 . Скопируйте текст байтов подписи отпечатка пальцев sha1.
- байты в sha1 подпись отпечатков пальцев, которые необходимы, чтобы написать "в SHA1.файл bin". Вы можете использовать шестнадцатеричный редактор для вставки скопированных байтов. После этого сохраните файл как " sha1.закром."
- снова откройте терминал и введите: "openssl base64-in sha1.bin-out base64.формат txt."
- в результате "в base64.txt " будет содержать ключевой хэш, который необходим для Facebook.
Великий и простой шестнадцатеричный редактор для mac: HexFiend
OpenSSL должен быть предустановлен на mac, а вот ссылка для версии Windows.
попробуйте передать пароль для ключа и сохранить как часть команды
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android \ | openssl sha1 -binary \ | openssl base64
Я смог выполнить запрошенную задачу с некоторыми из решений здесь, но подумал про себя, мальчик, который глуп... почему бы не написать небольшой Java-код, который делает это, и упаковать его в банку, я так и сделал...
A ссылка на скачивание банку
работает на Windows 8... не пробовал никакой другой ОС.
Привет всем его моя история, как я получил подпись имеет ключ для facebook
прежде всего, вы просто должны скопировать эти 2 метода в свой первый класс
private void getAppKeyHash() { try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), 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)); System.out.println("HASH " + something); showSignedHashKey(something); } } catch (NameNotFoundException e1) { // TODO Auto-generated catch block 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()); } } public void showSignedHashKey(String hashKey) { AlertDialog.Builder adb = new AlertDialog.Builder(this); adb.setTitle("Note Signed Hash Key"); adb.setMessage(hashKey); adb.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); adb.show(); }**звонок функционировать getAppKeyHash() от вашей методе onCreate метод, если вы хотите, подписанный хэш затем сделать подпись строить установить подпись сборки и запуска вы получите хэш-ключ в диалоговое окно, то просто обратите внимание и обновить его на facebook Дев аккаунт и комментировать данную функцию и сделать еще один подписанный АПК **
Если ваш пароль=android не так, то поставьте свой пароль ПК на то, что он работает для меня.
и для генерации keyHash попробуйте эту ссылку здесь
создать отладочный хэш-ключ
public String hashkey(Context context) { String keyhash = ""; try { PackageInfo info = context.getPackageManager().getPackageInfo(context.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)); keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT); } } catch (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } return keyhash; }создать хэш-ключ выпуска
keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
единственное, что работает для меня, используя пароль
android. Почему это не упоминается в каких-либо руководствах там?
используйте это в kotlin для печати хэша ключа в log
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){ }

Comments