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:

  1. ключ отладки по умолчанию для 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).

Для получения дополнительной информации о подписании вашей заявки посетите страницу Подписание вашей заявки.

Другой вариант - распечатать ключ хэша, отправленный в 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.

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

Другие вопросы по тегам