Можно ли расширить токены Facebook с помощью exteAccessTokenIfNeeded в приложении для Android?

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

My question

Has anyone successfully refreshed a token using the extendAccessTokenIfNeeded function? If you did have success, what version was the device (or emulator) running?

Background

Я получил электронное письмо от Facebook, в котором говорится, что разрешение offline_access устарело с 1 мая 2012 года, и Facebook рекомендовал обновить его до последней версии SDK. Хорошо.

Я обновил до последней версии SDK, на моем устройстве установлено официальное приложение Facebook, и (в конце концов!) Единый вход работает нормально. Я получаю токены на 60 дней, что опять-таки нормально.

Проблемы начались, когда я попытался использовать exteAccessTokenIfNeeded (Контекст контекста, ServiceListener serviceListener). Я не мог заставить его обновить свои токены в течение более длительного срока действия. Я ждал 24 часа между попытками, но токен не обновлялся. Единственный способ получить обновленный токен - выйти и войти. Это также произошло, когда я использовал пример проекта «Hackbook».

Самый очевидный ответ: я делаю что-то не так, носообщение об ошибке был отправлен в Facebook с сообщением о том, что ... "shouldExtendAccessToken практически всегда будет возвращать значение false. & quot; Этому отчету был присвоен приоритет «Список пожеланий».

Alternatives to the extendAccessTokenAsNeeded()

вДокументация Facebook об устаревании offline_access токены могут быть расширены с помощью Graph API. Однако это имеетнедостаток необходимости "Секрет приложения" будучи включенным в URL. Преимущество заключается в том, что пользователю не нужно устанавливать официальное приложение Facebook на своем устройстве.

Other ideas and concerns

By changing the extendAccessTokenIfNeeded function in Facebook.java to always return true, I think I got it to refresh once. (The reason I say "think" is because it won't repeat the behaviour and I suspect I have to wait another 24 hours before any chance of another success)

I notice that Hackbook requires AndroidHttpClient to be imported. This is only available for API 8 onwards. Does this mean that Facebook SSO (in particular token refreshing) is only likely to work on devices with API 8 and later?

The Facebook.apk included in the SDK is quite old. Perhaps this is why the tokens don't refresh on emulators running API 8 and later?

And lastly, all of this only relates to those people that have the official Facebook app installed! Another method needs to be completed for those people without the official Facebook app (just complaining now!)

Relevant Facebook links

Facebook-Android-SDK на GitHub

Facebook Android Учебник

Facebook offline_access разрешение отклонено

Отчет об ошибке в Facebook

Related Stack Overflow Questions

Facebook 60-дневный токен доступа и устарел Offline_Access

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

Как будет работать offline_access после устаревания после 1 мая?

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

Защита секрета приложения для использования exteAccessToken (Java / Android)

Ответы на вопрос(2)

Ваш ответ на вопрос