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
Я искал StackOverflow с помощью «remote_app_id», и результаты «Bundle ID» в iOS, но я не знаю, что означает «remote_app_id» в Android. Я уже установил имя пакета и имя активности в настройках моего приложения Facebook. Я не знаю причины ошибки.
- Openssl не распознается как внутренняя или внешняя команда
- Загрузить фото в Facebook с Android Android SDK в Android
- Android Facebook api 3.0 ошибка: не удается вызвать LoginActivity с нулевым вызывающим пакетом
- Установите разрешение на получение идентификатора электронной почты пользователя из Facebook.
- Android Facebook 4.0 SDK Как получить электронную почту, дату рождения и пол пользователя
- с помощью facebook sdk в студии Android
- Доступ к электронной почте пользователя с помощью нового Android Android SDK
- Текущий день в Facebook Друзья Дни рождения в Android
- WebApi ASP.NET Identity Facebook для входа в систему
- Как обращаться с facebook как с подтверждением в веб-браузере Android
- Диалог друзей Facebook возвращает ошибку «Неизвестный метод»
- Как программно выйти из Facebook SDK 3.0 без использования кнопки входа в систему Facebook / выхода?
- Хэш-код Facebook не соответствует какому-либо сохраненному ключу
Другая возможная ошибка (которая произошла со мной) заключается в следующем: создать «Ключ Хэша» в Facebook App Console и подписать приложение Android с помощью другого хранилища ключей.
К сожалению, это вызвано тем, что учебник по началу работы с Facebook вызывает эту ошибку. В нем говорится, что разработчики Android должны использовать стандартный отладочный ключ от android в ваших примерах и не объясняют, что Key Hash должен быть сгенерирован с тем же хранилищем ключей, которое вы подпишете в своем приложении.
Я рекомендую настроить два hashа на консоли facebook:
- default отладочный ключ 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. Таким образом, невозможно опубликовать приложение, используя только hash-ключ, сгенерированный с использованием первой предыдущей командной строки (как предлагает учебник по facebook.
Для получения дополнительной информации о подписании заявки посетите раздел «Подписывание приложения» .
Другой вариант – распечатать hash-ключ, отправленный в Facebook, и использовать это значение.
Внесите следующие изменения в метод onCreate()
в вашем основном 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
.
Это сработало для меня!
Я решил этот вопрос. Проблема в том, что «Key Hash», который я сгенерировал с помощью «keytool», был неправильным. Когда «keytool» запрашивает пароль, вы должны использовать для него «android» (без кавычек). Вместо этого я использовал свой собственный пароль. Когда я сменил пароль, проблема просто улетела. Надеюсь это поможет.
Я попал в ловушку от неправильного openssl, что вызвало неправильный хеш-ключ. Я использовал openssl из http://gnuwin32.sourceforge.net/packages/openssl.htm, который решил проблему.
У меня была та же проблема, выяснилось, что openssl создавал неправильный sha1. скачал новый, и он работал как шарм.
Кроме того, убедитесь, что вы вводите hash в нужном месте на портале facebook dev. Отредактируйте настройки приложения и выберите «Натуральное приложение для Android».
Я ошибочно поставил hash в «Sample App Settings» вместо этого.
Вы получаете hash-ключ с отладочным ключом … Что может работать, если вы не подписываете пакет и запускаете приложение в режиме отладки. Что вам нужно сделать:
1) Перейдите в файл манифеста и добавьте в приложение android: debuggable = “true”.
2) Теперь запустите приложение и проверьте логарифм.
3) Вы получите распечатку нового ключа, который будет соответствовать ключевому слову с x9SLcMXBlgly1f36PJuuc4a3YAc. Ключ, который у вас есть, теперь имеет знак «=» в последнем.
4) Зарегистрируйте этот ключ на сайте разработчика
Альтернативный трюк
Вы можете сделать еще одну вещь. Просто зарегистрируйте этот ключ на сайте разработчиков facebook. X9SLcMXBlgly1f36PJuuc4a3YAc =
Просто добавьте = к ключу, который отображается приложением facebook.
вы сделали!! Надеюсь, это сработает.