Facebook Android Генерирует Хэш Ключа



пытаясь создать приложение для android с интеграцией Facebook, я добрался до той части в документах, где вам нужно создать ключевой хэш-файл, он указывает, чтобы запустить следующий код



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


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



Я просто хочу создать свой ключевой хэш



может ли кто-нибудь указать мне в правильном направлении?

900   20  

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)

  1. для создания подписи вам нужно openssl установлен на вашем компьютере. Если у вас нет одной загрузки openssl от здесь
  2. В C: Создать openssl папку
  3. извлеките содержимое загруженного файла OpenSSL zip в (то есть в моем случае это C:\Users\Anhsirk , вам просто нужно изменить это для вашей учетной записи пользователя.

    дайте пароль как android

    . Если он не запрашивает пароль, Ваш путь к хранилищу ключей неправильный.

    если все работает нормально, он должен дать вам хэш-ключ ниже.

    enter image description here

правильный ключ можно получить из самого приложения, добавив следующий код, чтобы поднять правильный хэш ключа (в случае 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

  1. скачать openssl-0.9. 8e_X64
  2. создайте папку openssl на диске C
  3. извлечение Zip-файлов в папку openssl
  4. Пуск - > Выполнить: cmd (нажмите enter)
  5. (нажать) компакт-диск C:\Program Файлы\Java\jdk1.6.0_45\bin. Примечание: C:\Program Files\Java\jdk1.6. 0_45\bin: путь к папке jdk на вашем компьютере
  6. (нажмите) keytool-exportcert-alias GCI-keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1-двоичный | C:\openssl\bin\openssl base64. Примечание: D:\folder\keystorerelease: это путь к вашему keystorerelease

  7. введите пароль хранилища ключей:это пароль при регистрации keystorerelease.

    вы есть хэш ключа: jDehABCDIQEDWAYz5Ow4sjsxLSw=
  8. войти в 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.

наслаждайтесь

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

пароль сертификата отладки-android, а не Android

наконец :)

вот моя история :

  1. добавить этот код в основной вид деятельности, после установки макета.

    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) {
    }
    
  2. измените имя проекта на имя вашего пакета!

  3. подпишите свое приложение (Android Tools->Export Signed Application)
  4. в вашей основной деятельности, где вы вставляете код из 2 варианта, в вашем макете создать TextView с идентификатором textstring
  5. раскомментируйте две строки, что ваш знак код будет установлен в TextView 6 Wuolia, у вас есть свой хэш , установите приложение на свой телефон!!! и проверьте свой хэш-ключ!
  6. теперь , когда он виден, перейдите в созданное приложение facebook и добавьте его в [ключевые хэши]
  7. обратите внимание, что ваше имя пакета должно быть таким же, как на facebook [имя пакета] в разделе [Ключевые хэши]
  8. хорошего дня :)

одна линия решение для создания для 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), который мне кажется прямым:

  1. скачать openssl по ссылке ниже: https://code.google.com/p/openssl-for-windows/downloads/list
  2. распакуйте его на локальный диск (например, C:\openssl)
  3. чтобы получить ключ разработки для интеграции 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") с вашим собственным путем установки.

  1. он запросит пароль, например,

ввод ключей пароль: андроид

введите android в качестве пароля, как показано выше.

вот оно! Вам будет предоставлен ключ длиной 28 символов. Ура!

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

keytool-exportcert-псевдоним YOUR_RELEASE_KEY_ALIAS-keystore YOUR_RELEASE_KEY_PATH | " путь для openssl.exe " sha1-binary / openssl base64

отличный пост в блоге на эту тему

извлечение хэша ключа из .ключевые Р12

  1. откройте терминал или командную строку и перейдите в папку, где ваш .ключевые P12-это.
  2. введите: "keytool-V-list-keystore mycert.p12-тип магазина pkcs12 " где mycert.p12-это имя вашего файла .ключевые Р12.
  3. введите пароль для хранилища ключей (тот, который вы использовали при экспорте .ключ Р12). 4 . Скопируйте текст байтов подписи отпечатка пальцев sha1.
  4. байты в sha1 подпись отпечатков пальцев, которые необходимы, чтобы написать "в SHA1.файл bin". Вы можете использовать шестнадцатеричный редактор для вставки скопированных байтов. После этого сохраните файл как " sha1.закром."
  5. снова откройте терминал и введите: "openssl base64-in sha1.bin-out base64.формат txt."
  6. в результате "в 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

    Ничего не найдено.