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

Другая возможная ошибка (которая произошла со мной) заключается в следующем: создать «Ключ Хэша» в Facebook App Console и подписать приложение Android с помощью другого хранилища ключей.

К сожалению, это вызвано тем, что учебник по началу работы с Facebook вызывает эту ошибку. В нем говорится, что разработчики Android должны использовать стандартный отладочный ключ от android в ваших примерах и не объясняют, что Key Hash должен быть сгенерирован с тем же хранилищем ключей, которое вы подпишете в своем приложении.

Я рекомендую настроить два hashа на консоли facebook:

  1. default отладочный ключ 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. Таким образом, невозможно опубликовать приложение, используя только 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.

вы сделали!! Надеюсь, это сработает.

  • Аутентификация Facebook без кнопки входа в систему
  • Когда запрашивать разрешения с помощью Android Android SDK 3.0?
  • Давайте будем гением компьютера.