Android Facebook SDK 3.0 выдает "remote_app_id не совпадает с сохраненным идентификатором" при входе в систему
Я пытаюсь создать приложение, которое использует Facebook SDK для Android 3.0. Но когда я пытаюсь позвонить
Session.openActiveSession
Он просто дает мне SessionState с CLOSED_LOGIN_FAILED, а LogCat:
12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
Я искал Stackru с "remote_app_id", и в результате получился "Bundle ID" в iOS, но я не знаю, что означает "remote_app_id" в Android. Я уже установил имя пакета и название активности в настройках приложения Facebook. Я понятия не имею о причине ошибки.
7 ответов
Я решил этот вопрос. Проблема в том, что "Key Hash", который я генерировал с помощью "keytool", был неправильным. Когда "keytool" запрашивает пароль, вы должны использовать "android" для него (без кавычек). Я использовал свой собственный пароль вместо этого. Когда я сменил пароль, проблема просто улетела. Надеюсь это поможет.
Еще одна возможная ошибка (которая произошла со мной): установить "Хэш ключа" на консоли приложения Facebook и подписать приложение для Android с помощью другого хранилища ключей.
К сожалению, это вызвано тем, что руководство по началу работы с Facebook вызывает эту ошибку. В нем говорится, что разработчики Android должны использовать ключ отладки Android по умолчанию в ваших примерах, и не объясняется, что ключ хэш должен генерироваться с тем же хранилищем ключей, которое вы подпишете в приложении.
Я рекомендую настроить два ключевых хэша на вашей консоли Facebook:
- ключ отладки по умолчанию для Android:
keytool -exportcert -alias androiddebugkey -keystore ~ /.android/debug.keystore | openssl sha1 -binary | openssl base64
- ключ выпуска вашего приложения:
keytool -exportcert -alias yourappreleasekeyalias -keystore ~ /.your/path/release.keystore | openssl sha1 -binary | openssl base64
Помните: вы не можете публиковать приложение, подписанное с помощью ключа отладки, созданного инструментами SDK. Таким образом, невозможно опубликовать приложение, используя только хеш-ключ, сгенерированный с использованием первой предыдущей командной строки (как предполагает учебник на Facebook).
Для получения дополнительной информации о подписании вашей заявки посетите страницу Подписание вашей заявки.
Другой вариант - распечатать ключ хэша, отправленный в Facebook, и использовать это значение.
Внесите следующие изменения в onCreate()
метод в вашей основной деятельности:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures){
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
замещать com.facebook.samples.loginhowto
с your own package name
,
Это сработало для меня!
Я попал в ловушку неправильного openssl, который сгенерировал неправильный хеш-ключ. я использовал openssl из http://gnuwin32.sourceforge.net/packages/openssl.htm который решил проблему.
У меня была такая же проблема, я обнаружил, что openssl создает неправильный sha1. скачал новый, и он работал как шарм.
Кроме того, убедитесь, что вы ввели хэш в правильном месте на портале разработчиков Facebook. Отредактируйте настройки приложения и выберите "Приложение для Android".
Вместо этого я по ошибке поместил хеш в "Настройки примера приложения".
Вы получаете хеш-ключ с ключом отладки... Это может сработать, если вы не подписали пакет и не запустили приложение в режиме отладки. Что вам нужно сделать, это:
1) Перейдите в файл манифеста и добавьте в приложение android: debuggable = "true".
2) Теперь запустите ваше приложение и следите за logcat.
3) Вам будет напечатан новый ключ, который будет совпадать с x9SLcMXBlgly1f36PJuuc4a3YAc. Полученный ключ теперь имеет знак = в последнем.
4) Зарегистрируйте этот ключ на сайте разработчика facbook
Альтернативный трюк
Вы можете сделать еще одну вещь. Просто зарегистрируйте этот ключ на сайте разработчиков Facebook x9SLcMXBlgly1f36PJuuc4a3YAc=
Просто добавьте = к ключу, который отображается в приложении Facebook.
вы сделали!! Надеюсь, это сработает.