Я создаю приложение, которое будет поддерживать Facebook. Я загрузил facebook API и их образец под названием «Hackbook» из оригинальных репозиториев Git. Проблема с входом в систему - если оригинальное приложение FB не установлено на телефоне, вход проходит через настраиваемый диалог и все работает, но если приложение FB установлено, Hackbook автоматически перенаправляет на оригинальное приложение FB, а затем ничего не происходит. Войти невозможно. Я тестировал это на пяти разных телефонах, и всегда была одна и та же проблема.
Ошибка входа в API Facebook с приложением FB, установленным на телефоне
Ответы (5)
У меня была аналогичная проблема. В моем случае я не создал хеш-ключ, используя свой ключ подписи. Я только что создал один хэш-ключ, используя ключ подписи debug.keystore по умолчанию.
Как только я создал хэш-ключ, используя ключ подписи выпуска приложения, эта проблема была решена. Если вы еще этого не сделали, создайте новый хеш-ключ, используя свой ключ подписи (для загрузки на рынок) и добавьте его в панель управления facebook вашего приложения.
Надеюсь это поможет.
Я трудился два дня и наконец получил решение, это НЕПРАВИЛЬНЫЙ способ получить хеш-ключ -
keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64
Правильный способ — ввести эти 3 строки по одной в cmd. После первой строки вам будет предложено ввести пароль хранилища ключей.
keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* > [openssl_bin_directory]\debug.txt
[openssl_bin_directory]\openssl sha1 -binary [openssl_bin_directory]\debug.txt > [openssl_bin_directory]\debug_sha.txt
[openssl_bin_directory]\openssl base64 -in [openssl_bin_directory]\debug_sha.txt > [openssl_bin_directory]\debug_base64.txt
Если хотите узнать подробности, ПРАВИЛЬНЫЙ способ описан здесь -
или здесь
Facebook Android генерирует хэш ключа
Получите хэш-ключ, используя эту функцию для обоих (отладка и выпуск apk) и поместите его в свое приложение на странице developer.facebook.com/apps.
private void calculateHashKey(String yourPackageName) {
try {
PackageInfo info = getPackageManager().getPackageInfo(
yourPackageName,
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) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
это мне очень помогает .. Надеюсь, это поможет и вам ..
Я исправил эту проблему. После получения хэша ключа с помощью keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
я успешно вошел в систему в первый раз в режиме деблокирования... Затем во второй раз я получил общую ошибку Ваш ключ "*********real*key************"
не соответствует разрешенным ключам, указанным в настройках вашего приложения.
Просто используйте "*********real*key************"
, который Facebook выдает в сообщении об ошибке. Я успешно вошел в систему сейчас в режиме выпуска. Поэтому убедитесь, что при вводе этого ключа вы используете точно такой же ключ. ПИСЬМА I, small(L) i.e (l)
доставят вам неприятности. Я сделал два ключа, в первом ключе я использовал small(L) i.e (l)
, а во втором ключе я использовал I. и поместил эти ключи в приложение разработчика.
Теперь он работает ....
В моем случае проблема заключалась в том, что пользовательский вход в систему отменяется, когда на устройстве установлено приложение facebook даже после создания правильных ключей.
Я добавил следующую строку перед входом в систему, и она отлично работает.
LoginManager.getInstance().logOut();