Ответ 1
да, вы делаете это правильно, я думаю. Я также выполняю эту команду и помещаю этот хэш в мое приложение fb и его работу должным образом.
Мне просто нужно подтверждение.
Я разрабатываю на 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
Итак, как только я это сделал, он запрашивает пароль: (он показывает пароль, когда я его печатаю)
Если я введу правильный пароль, я получаю
'zR2tey1h9kqPRSW/yEYEr0ruswyD =' (изменено для публики)
но если я введу неверный пароль, он все равно возвращает мне код в виде
'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='?
Так что да, просто искал подтверждение, что я поступаю правильно, и это ожидаемый результат
да, вы делаете это правильно, я думаю. Я также выполняю эту команду и помещаю этот хэш в мое приложение 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());
}
при извлечении хэша с окнами cmd, git bash или cygwing terminal, три инструмента дают разные результаты.
наиболее точным является код выше
Ответьте на свой вопрос ниже:
Итак, как только я это сделал, он запрашивает пароль: (он показывает пароль как я его печатаю)
Если я введу правильный пароль, я получаю
'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.