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

Я работаю над Android-приложением, в котором хочу интегрировать Facebook функция публикации. Я скачал Android-SDK для Android, и я получил readme.md(текстовый файл), в котором он упоминается для генерации ключевой хэш для 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. Не стесняйтесь использовать его, если я помог вам.:)

Screen shotScreen shot 2

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

  1. Теперь откройте журнал cat и выполните поиск с помощью "KeyHash" и скопируйте хеш-ключ.

  2. Вы создаете клавишу 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, проверьте изображение ниже.enter image description here

Теперь скопируйте этот ключ SHA-1 и вставьте его на этом веб-сайте. http://tomeko.net также проверьте изображение ниже, чтобы получить ключ хэша.

enter image description here

Ответ 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