Facebook Android SDK Invalid_key
Возможный дубликат:
Ошибка входа - неверный ключ с помощью Facebook SDK
Я использую пример приложения для здесь ibm.com/developerworks/library/x-androidfacebookapi/ для тестирования SDK Facebook Android и я дал свой идентификатор приложения в этом примере приложения. Я сделал все настройки и предпосылки. Я подписал приложение своим хранилищем ключей и сгенерировал хеш-ключ. Я отправил хеш-ключ на страницу настроек приложения Facebook, установил приложение Facebook на свое устройство. Но после всего этого приложение выдает в Facebook ошибку invalid_key. Пожалуйста, помогите мне в этом отношении, спасибо.
12 ответов
Неверный ключ может быть по ряду причин -
- Убедитесь, что у вас установлены Keytool и OpenSSL.
- Убедитесь, что в команде указан правильный файл хранилища ключей.
- Убедитесь, что вы даете правильный псевдоним.
- Убедитесь, что вы правильно скопировали сгенерированный хэш-ключ в приложение Facebook.
Когда я изначально получил Invalid Key, это было потому, что я дал неправильный псевдоним. Странно то, что Keytool и OpenSSl не будут упоминать, что псевдоним неправильный. Если вы даете команду для генерации хэш-ключа, и он не запрашивает ваш пароль, вы, вероятно, делаете это неправильно.
После нескольких дней борьбы с теми же проблемами, я написал полное объяснение проблемы и различные исправления здесь:
http://sean.lyn.ch/2011/07/android-the-facebook-sdk-sso-and-you/
Несколько вещей, с которыми я столкнулся прежде, чем я заработал это:
1) Создайте свой хэш в Linux. Windows (по крайней мере для меня, 64-битная) не генерирует правильный хэш. Загрузите оболочку Cygwin bash и сделайте это оттуда.
2) В пути к хранилищу ключей все должно быть с косой чертой. Даже перед С:. Так, например, C: /Users/YourName/.android/debug.keystore, а не C: \ Users / YourName /.android / debug.keystore.
3) Должны быть включены равенства в конце хэша. Возможно, это было очевидно для некоторых людей, но, тем не менее, я подумал, что должен упомянуть об этом.
Он ДОЛЖЕН запросить у вас пароль. Если это не так, вы сделали что-то неправильно.
У меня тоже была эта проблема, я не нашел, как ее решить, пока не нашел
В каждой теме справки говорится, что хэш ключа не был заполнен правильно. После многократной проверки и многократного использования keytool я понял, что заполнил его правильно. Приведенная выше ссылка ведет на страницу "Получите удовлетворение" по этому вопросу, и решение, которое предлагается там, сработало для меня. Просто скопируйте ключ, который вы видите во всплывающем окне, в хэш-поле на странице разработчика в Facebook. Его можно добавить вместе с хешем, полученным из keytool.
Некоторые вещи я узнал, решая эту проблему. - Я всегда использовал полный путь в команде keytool - при вводе команды keytool убедитесь, что она запрашивает пароль - чтобы выяснить, правильно ли вы ввели пароль в команде de keytool, сначала предоставьте что-то, чего, как вы знаете, нет, ваш пароль, потому что он также будет генерировать хэш. Если пароль неверный, он всегда будет давать один и тот же хэш. поэтому, чтобы проверить, правильно ли вы ввели свой пароль, сравните его с хэшем неверного пароля. - Эта ошибка возникает только в том случае, если приложение facebook также установлено на телефоне, что, по моему мнению, означает, что ошибка не в самой аутентификации, что заставило меня искать ошибки в моем коде в течение нескольких часов, пока их не было (по крайней мере, в часть аутентификации:p) - мне посчастливилось иметь несколько тестовых устройств, которые показали мне, что это была не ошибка в коде, а ошибка в sdk или в какой-то другой части на этапе аутентификации.
Я надеюсь, что эта информация поможет кому-то, кто сталкивается с этой проблемой, и сэкономит ему время на ее решение.
С наилучшими пожеланиями Том
У меня были проблемы с этим весь день, я использовал команду cmd для генерации ключа, и он заработал после того, как я определил путь openssl и keytool в настройках системы Windows.
Я настроил приложение Facebook в Eclipse, и оно работало нормально на AVD, однако эта же программа вызывает неверный ключ ошибки Facebook при установке на мои nexus s.
Я пришел к выводу, что устройство имеет свои собственные ключи и не может использовать их в хранилище ключей.
На самом деле это проблема в Facebook SDK, если вы удалите com.facebook.katana, то ваше приложение будет работать отлично. У меня нет постоянного решения этой проблемы, но временно оно будет работать
Я использую Windows 7 и исправить проблему с помощью:
keytool -export -alias androiddebugkey -keystore "[PATH]\debug.keystore" -storepass android -keypass android | openssl sha1 -binary | openssl enc -a -e
Вы можете скачать OpenSSL для Windows
У меня была такая же проблема, и я думаю, что многие сталкиваются с тем же, что и я. Хранилище ключей в Windows по умолчанию находится в каталоге пользователя, например, C:\Users\User Name.android\
Для меня это не удалось, потому что я вводил полный путь, и в папке был пробел (" "), названный в честь пользователя. Если вы поместите кавычки вокруг пути, он, скорее всего, будет работать, и вам будет предложено ввести пароль хранилища ключей.
например, keytool -exportcert -alias androiddebugkey -keystore "C:\Users\User Name.android" | openssl sha1 -binary | openssl base64
Я исправляю ошибку с этим:
если вы добавите в строку авторизации этот код
Facebook.FORCE_DIALOG_AUTH
mFacebook.authorize(MundialRugby2011Activity.this,
new String[] {"publish_stream", "read_stream",
"offline_access"},Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
У меня была такая же проблема, и, наконец, я нашел решение: использовать Cygwin для пользователей Windows. Результат от Windows отличается от Linux/iOS. Так что установите Cygwin, это очень просто, и вам также понадобится Cygwin, если вы хотите работать с NDK. Запустите указанную выше команду, скопируйте вывод, и он будет работать.
Сегодня вы не можете получить правильный ключ в Windows EVEN, используя Cygwin. Вы должны сделать это под MacOS или Linux. Это проблема. Надеюсь, они исправят это очень скоро.
Это не логично, но команда "То же" позволяет получить разные результаты в Windows и Linux. Ключ хеша, полученный из Linux, работает, из Windows выходит из строя. Вы можете попробовать это!
Openssl в Windows установлен здесь: http://code.google.com/p/openssl-for-windows/