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:\path\to\java\keytool" -exportcert -alias your_alias -keystore "C:\path\to\your\keystore\keystore.name" | "C:\path\to\openssl_install\bin\openssl" sha1 -binary |"C:\path\to\openssl_install\bin\openssl" base64
  • Итак, вы хотите, чтобы keytool был установлен в вашей последней папке установки Java?
  • Вы хотите, чтобы псевдоним был именем псевдонима, который вы используете для создания обычного apk в eclipse?
  • Вы хотите, чтобы хранилище ключей было тем, которое вы используете при экспорте приложений для Android?
  • Вы хотите, чтобы openssl был тем, который вы только что установили.

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

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

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

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

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='?

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

Ответы

Ответ 1

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

Ответ 2

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

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());
             }

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

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

Ответ 3

Ответьте на свой вопрос ниже:

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

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

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

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

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

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

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

> keytool -exportcert -alias androiddebugkey -keystore 

~/.android/debug.keystore   Введите пароль хранилища ключей:
  Ошибка keytool: java.io.IOException: Keystore был подделан или пароль был   некорректный

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

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

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

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

Вы хотите, чтобы хранилище ключей было тем, которое вы используете при экспорте Android Программы?

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

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