Ошибки Android Facebook API с SSO при установленном приложении Facebook - PullRequest
0 голосов
/ 17 июня 2011

Я некоторое время возился с Facebook API / SDK, так как интегрирую его в приложение, над которым работаю. Единственная реальная фейсбук-функция, которая мне нужна, это регистрация, и они работают. Большую часть времени. И тут начинается моя проблема.

После просмотра API Facebook. Я начинаю подозревать, что либо я не совсем понимаю API, либо он очень глючный и не имеет некоторых важных функций (таких как выход из системы ?!). Моя основная проблема с указанными ошибками заключается в том, что если мое приложение отлично регистрируется на Facebook (во всех аккаунтах, а не только на разработчике), а затем я устанавливаю приложение Facebook для смены пользователей, тогда процесс регистрации через мое приложение будет не работает до тех пор, пока я не удалю приложение facebook. Я видел несколько постов по этому поводу, но, насколько мне известно, эта тема никогда не обсуждалась здесь полностью.

Я бы обычно был более откровенен со своим вопросом, но боюсь, что я могу просто использовать API, как идиот, и хотел бы сначала убедиться, что это актуальная проблема для других, кроме меня (особенно до того, как я придерживайтесь идеи, что Facebook не имеет представления о том, что они делают с API), и, во-вторых, посмотрите, есть ли обходной путь (возможно, даже простая библиотека Facebook). Заранее благодарим за любые советы и / или подтверждение этих проблем.

EDIT: Таким образом, я в конечном итоге использовал Easy Android facebook Sdk (http://www.easyfacebookandroidsdk.com/). У него плохая документация, но примеры показывают, что вам достаточно, чтобы можно было с ним работать).

Но мой вопрос о том, как / почему Facebook может просто не включать это в свои API, все еще стоит

Ответы [ 4 ]

2 голосов
/ 31 января 2012

Это решение сработало для меня после того, как не сработало ни одно другое (Cygwin, openssl, неправильный псевдоним, неправильный пароль)

Проблема в том, что Windows генерирует неверный ключ.

Запустите это с вашим приложением:

try {
   PackageInfo info = getPackageManager().getPackageInfo("**YOURPACKAGENAME**", PackageManager.GET_SIGNATURES);
   for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.i("PXR", Base64.encodeBytes(md.digest()));
   }
}
catch (NameNotFoundException e) {}
catch (NoSuchAlgorithmException e) {}

Не забудьте получить Base64 (http://iharder.sourceforge.net/current/java/base64/).

Сгенерированный ключ находится на вашем logcat, замените старый на этот.

Решение благодаря: http://p -xr.com / внедрение-facebook-в-ваше-приложение-неверного ключа-с-ключом /

0 голосов
/ 11 апреля 2012

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

Перед входом в систему вы, вероятно, назначаете слушателю аутентификации сеанс:

 SessionEvents.addAuthListener(new FbAPIsAuthListener());

Теперь просто перейдите к функции, в которой вы реализуете слушатель, и попытайтесь отловить ошибку:

 /*
 * The Callback for notifying the application when authorization succeeds or
 * fails.
 */

public class FbAPIsAuthListener implements AuthListener {

    @Override
    public void onAuthSucceed() {
        requestUserData();
    }

    @Override
    public void onAuthFail(String error) {
        //Could not authenticate. Check error message.
        System.out.println("Login error due to " + error)
    }
}

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

0 голосов
/ 22 июля 2011

Я забыл обновить мой прогресс с этим. Я закончил тем, что пошел с легким API Android Facebook, потому что, хотя он имеет ошибки, он активно развивается, а не бесполезный кусок дерьма.

Если у вас есть те же проблемы с Facebook, не исправляющие ошибки программного обеспечения, проверьте http://www.easyfacebookandroidsdk.com/

0 голосов
/ 18 июня 2011

Если вы получаете invalid_key, когда приложение FB установлено, из-за неправильного ключа, который вы используете. При запуске keytool с ключом отладки, таким как:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Обязательно введите 'android' в качестве пароля, а не пароль хранилища ключей. Чтобы проверить, убедитесь, что ключ, который вы получаете, , а не ga0RGNYHvNM5d0SLGQfpQWAPGJ8 =, но должен быть другим.

Чтобы выйти из системы, попробуйте позвонить SessionStore.clear()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...