keytool с Android Facebook SDK

мне просто нужно подтверждение.

Я разрабатываю на windows

Я пытаюсь интегрировать facebook в приложение, и в документации SDK говорится, что мне нужно "экспортировать подпись"

отсюда:http://developers.facebook.com/docs/guides/mobile/#android

поэтому он говорит, что выполните эту команду:

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

сначала мне пришлось скачать openssl:OpenSSL

теперь команда выше, я предполагаю следует преобразовать в:

"C:pathtojavakeytool" -exportcert -alias your_alias -keystore "C:pathtoyourkeystorekeystore.name" | "C:pathtoopenssl_installbinopenssl" sha1 -binary |"C:pathtoopenssl_installbinopenssl" base64
  • Итак, вы хотите keytool, который установлен в вашей последней папке установки Java?
  • вы хотите, чтобы псевдоним был именем псевдонима, который вы используете для обычного создания apk в eclipse?
  • вы хотите keystore, который используется при экспорте приложения для Android?
  • вы хотите, чтобы openssl был тем, который вы только что установили

поэтому, как только я это сделаю, он запрашивает пароль: (он показывает пароль, как я его набираю)

Если я введу правильный пароль, я получу

'zR2tey1h9kqPRSW/yEYEr0ruswyD=' (изменено для публики)

но если я ввожу неправильный пароль, он все равно возвращает мне код в виде

' ga0RGNYHvTR5d3SVDEfpQQAPGJ1='?

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

3 ответов


да вы делаете это правильно я думаю.я также выполняю эту команду и помещаю этот хэш в мое приложение fb и его работает правильно.


лучший способ получить хэш-код-запустить следующий код:

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));
                    Log.e("hash key", something);
        } 
        }
        catch (NameNotFoundException e1) {
            // TODO Auto-generated catch block
            Log.e("name not found", e1.toString());
        }

             catch (NoSuchAlgorithmException e) {
                // TODO Auto-generated catch block
                 Log.e("no such an algorithm", e.toString());
            }
             catch (Exception e){
                 Log.e("exception", e.toString());
             }

при извлечении хэша с помощью Windows cmd, Git bash или cygwing terminal три инструмента дают разные результаты.

Наиболее точным является код выше


ответ на ваш вопрос ниже:

поэтому, как только я это сделаю, он запрашивает пароль: (он показывает пароль как я его печатаю)

если я введу правильный пароль, я получу

'zR2tey1h9kqPRSW / yEYEr0ruswyD=' (изменено для public), но если я введу неверный пароль он все равно возвращает мне код в виде

' ga0RGNYHvTR5d3SVDEfpQQAPGJ1='? Так что да, я просто искал ... подтверждение того, что я поступаю правильно. вещь, и это выход ожидалось

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 имеет три команды, подающие вывод предыдущей команды следующей команде.

  1. keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
  2. openssl sha1 -binary
  3. openssl base64

когда указан неверный пароль хранилища ключей, первая команда генерирует ошибку, но это не будет отображаться, так как это будет вводиться во вторую команду, и генерируется другой хэш. Выполните только первую команду keytool (keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore) в подтвердите пароль хранилища ключей, и если правильно. Если пароль неверен, будет отображаться аналогично выводу ниже.

> keytool -exportcert -alias androiddebugkey -keystore 

~/.android / отладка.хранилище Введите пароль хранилища ключей:
ошибка keytool: java.Ио.IOException: хранилище ключей было изменено, или пароль был неверно

обеспечить android ответить Enter keystore password: для запроса, если хэш отладки android генерируется. Пароль по умолчанию для хранилища ключей отладки android android

команда также могла написать, чтобы поймать ошибку из команды keytool, чтобы увидеть, вернула ли команда 1 ошибку перед запуском команды 2.

Итак, вы хотите keytool, который установлен в вашей последней установке Java папка?

вы хотите, чтобы псевдоним был псевдоним, который вы используете для нормального создание apk в eclipse?

вы хотите keystore, который используется при экспорте андроид приложения?

вы хотите, чтобы openssl был тем, который вы только что установили?

" да " на все вышеперечисленные вопросы. путь можно настроить, чтобы не вводить полный путь для keytool и openssl.