Подтвердить что ты не робот

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. Я не знаю причины ошибки.

4b9b3361

Ответ 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

  1. ключ вашего приложения:

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.

ты закончил!! Надеюсь, что это сработает.