2012-05-09 4 views
9

Я создаю приложение, которое будет иметь поддержку для facebook. Я загрузил API facebook и их образец под названием «Hackbook» из оригинального репозитория Git. Проблема заключается в логине - если оригинальное приложение FB не установлено на телефоне, логин идет через настраиваемый диалог, и все работает, но если приложение FB установлено, Hackbook автоматически перенаправляется в оригинальное приложение FB, а затем ничего не происходит. Невозможно войти в систему. Я тестировал это на пяти разных телефонах, и всегда была та же проблема.Ошибка входа в API Facebook с помощью приложения FB, установленного по телефону

ответ

18

У меня была аналогичная проблема. В моем случае я не создал хэш-ключ, используя мой ключ подписи. У меня только один хэш-ключ, созданный с помощью ключа подписи debug.keystore.

Как только я создал хэш-ключ с помощью ключа подписи к выпуску приложения, эта проблема была разобрана. Если вы еще этого не сделали, создайте новый хэш-ключ, используя свой ключ подписи (для загрузки на рынок) и добавьте его в панель управления facebook вашего приложения.

Надеюсь, это поможет.

+0

Я добавил этот хэш-ключ в панель управления, но проблема все еще здесь. Должен ли я добавить ключ хеширования в fb api где-нибудь? – virusss8

+2

@ virusss8: Вам не нужно добавлять hashkey в ваше приложение. Следуйте этому шагу и скажите мне результат. Откройте файл класса Util в вашем facebook-sdk и измените «private static boolean ENABLE_LOG = false» на «true». Теперь держите телефон подключенным к компьютеру разработки и запустите приложение, созданное с помощью подписанного apk и войдите в систему. Сохраните окно DDMS и посмотрите, генерирует ли он ошибку. –

+0

D/Facebook-authorize (25124): Ошибка входа: invalid_key: несоответствие клавиш Android. Ваш ключ «********* real * key ************» не соответствует разрешенным ключам, указанным в настройках вашего приложения. Проверьте настройки своего приложения на http://www.facebook.com/developers , но я никогда не устанавливал этот ключ нигде. Какой ключ? – virusss8

4

Я трудился в течение двух дней & получил решение в прошлом, это НЕПРАВИЛЬНО способ получить хэш-ключ -

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 

Если вы хотите узнать подробности, то RIGHT способ описан здесь -

http://facebook.stackoverflow.com/questions/13281913/app-is-misconfigured-for-facebook-login-with-release-key-hash

или здесь

Facebook Android Generate Key Hash

+1

Зачем вам публиковать неправильные тексты, а не право? Я почти использовал его lol, но спасибо за ссылку на правый – Guardanis

+2

@Cruceo, я отредактировал сообщение, вы можете дать +1, если вам это нравится. – Khobaib

+0

БЛАГОДАРИИ ВАС просто провел последние 3 часа, пытаясь понять это –

1

живите хэш ключа с помощью этой функции для обоих (debug и release apk) и поместите его в свое приложение в developer.facebook.com/a имп

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(); 
    } 
} 

это поможет мне много .. Надеюсь, что это поможет вам тоже ..

1

Я установил этот вопрос. После получения Key hash с помощью 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. и поместил эти ключи в приложение разработчика.
Работает сейчас ....

+0

Это была конкретная проблема в моем случае ... единственное решение, которое сработало! и часть о маленьком «L» правильна, а также Big 'I' (который может выглядеть как маленький «L» в некоторых шрифтах. –

0

В моем случае проблема заключалась в том, что пользовательский логин отменяется, когда приложение facebook установлено на устройстве даже после создания правильных клавиш.

Я добавил следующую строку перед входом в систему, и она отлично работает.

LoginManager.getInstance().logOut();