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. Я не знаю причины ошибки.
Ответы
Ответ 1
Я решил этот вопрос. Проблема в том, что "Key Hash", который я сгенерировал с помощью "keytool", был неправильным. Когда "keytool" запрашивает пароль, вы должны использовать для него "android" (без кавычек). Вместо этого я использовал свой собственный пароль. Когда я сменил пароль, проблема просто улетела. Надеюсь, это поможет.
Ответ 2
Еще одна возможная ошибка (которая произошла со мной) заключается в следующем: создать "Ключ Хэша" в Facebook App Console и подписать приложение Android с помощью другого хранилища ключей.
К сожалению, это вызвано тем, что Facebook Getting Started Tutorial вызывает эту ошибку. В нем говорится, что разработчики 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.
Для получения дополнительной информации о подписании вашего приложения посетите Подписание вашего приложения.
Ответ 3
Другой вариант - распечатать хэш-код ключа, отправленный в 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
.
Это сработало для меня!
Ответ 4
Я попал в ловушку от неправильного openssl, который породил неправильный хеш-ключ. Я использовал openssl из http://gnuwin32.sourceforge.net/packages/openssl.htm, который решил проблему.
Ответ 5
У меня была та же проблема, выяснилось, что openssl создавал неправильный sha1.
скачал новый, и он работал как шарм.
Ответ 6
Кроме того, убедитесь, что вы ввели хэш в нужном месте на портале facebook dev. Отредактируйте настройки приложения и выберите "Натуральное приложение для Android".
Я ошибочно помещал хэш в "Пример настроек приложения".
Ответ 7
Вы получаете хэш-ключ с отладочным ключом... Что может работать, если вы не подписываете пакет и запускаете приложение в режиме отладки. Что вам нужно сделать:
1) Перейдите в файл манифеста и добавьте в приложение android: debuggable = "true".
2) Теперь запустите приложение и проверьте логарифм.
3) Вы получите распечатку нового ключа, который будет соответствовать ключевому слову с x9SLcMXBlgly1f36PJuuc4a3YAc. Ключ, который у вас есть, теперь имеет знак "=" в последнем.
4) Зарегистрируйте этот ключ на сайте разработчика на сайте
Альтернативный трюк
Вы можете сделать еще одну вещь. Просто зарегистрируйте этот ключ на сайте разработчиков facebook. x9SLcMXBlgly1f36PJuuc4a3YAc =
Просто добавьте = к ключу, который отображается приложением facebook.
ты закончил!! Надеюсь, что это сработает.