Keytool с Android Facebook SDK - PullRequest
       7

Keytool с Android Facebook SDK

15 голосов
/ 26 июня 2011

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

Я занимаюсь разработкой для 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 ='?

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

Ответы [ 3 ]

12 голосов
/ 26 июня 2011

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

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 терминала три инструмента дают разный результат.

самый точный код выше

1 голос
/ 26 июня 2011

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

0 голосов
/ 08 ноября 2015

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

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

ЕслиЯ ввожу правильный пароль. Я получаю

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

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

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 / debug.keystore Введите пароль хранилища ключей:
Ошибка keytool: java.io.IOException: Подделка хранилища ключей или неправильный пароль

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...