Маркер доступа Facebook не может быть продлен

Я использую Android Android SDK, который я только что скачал с GitHub.

Я понимаю, что токен доступа действителен в течение очень ограниченного времени и должен расширяться каждый раз, когда приложение запускается, как описано в документе. https://developers.facebook.com/docs/mobile/android/build/

Есть 2 проблемы с этим:
1) функция exteAccessTokenIfNeeded() не обновляется, когда токен уже истек (через один или два часа!)

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

из источника SDK:

Intent intent = new Intent();
intent.setClassName("com.facebook.katana",
                    "com.facebook.katana.platform.TokenRefreshService");
...
ResolveInfo resolveInfo =
            context.getPackageManager().resolveActivity(intent, 0);
if (resolveInfo == null) {
        return false;
}

resoveInfo всегда является нулевым здесь.

есть идеи как продлить токен? я не хочу вызывать функцию authenticate() все время, пока истекает токен. это полностью разрушило бы пользовательский опыт!

спасибо Саймон

1 ответ

Решение

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

Альтернатива:

  1. Вы можете использовать график api /auth/access_token, описанный в developers.facebook.com/docs/offline-access-deprecation/

  2. Я пытаюсь запрос от Facebook iOS SDK, и он работает:

GET api.facebook.com/method/auth.extendSSOAccessToken?access_token=

или в формате JSON. GET api.facebook.com/method/auth.extendSSOAccessToken?format=json&access_token=

Пожалуйста, префикс https:// ко всем URL выше.

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