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

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

Мой вопрос

Кто-нибудь успешно обновил токен с помощью функции extendAccessTokenIfNeeded? Если у вас все получилось, какая версия устройства (или эмулятора )работала?

Предыстория

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

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

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

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

Альтернативы extendAccessTokenAsNeeded()

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

Другие идеи и проблемы

  • Изменив функцию extendAccessTokenIfNeeded в Facebook.java так, чтобы она всегда возвращала true, я думаю, что мне удалось обновить ее один раз. (Причина, по которой я говорю «думаю», заключается в том, что это поведение не будет повторяться, и я подозреваю, что мне придется ждать еще 24 часа, прежде чем появится шанс на новый успех.)

  • Я заметил, что Hackbook требует AndroidHttpClient быть импортный. Это доступно только для API 8 и выше. Это значит что Facebook SSO (, в частности обновление токена ), скорее всего, будет работать только на устройствах с API 8 и более поздних версий?

  • Facebook.apk, включенный в SDK , довольно старый. Возможно, именно поэтому токены не обновляются на эмуляторах с API 8 и более поздних версий?

  • И, наконец, все это относится только к тем людям, которые имеют установлено официальное приложение Facebook! Другой метод должен быть выполнен для тех людей, у которых нет официального приложения Facebook (, которые просто жалуются сейчас!)

Соответствующие ссылки на Facebook

Facebook -Android -SDK на GitHub

Facebook Android Tutorial

Facebook offline _прекращение поддержки разрешения на доступ

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

Связанные вопросы о переполнении стека

60-дневный токен доступа Facebook и устаревший автономный режим _Доступ

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

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

Токен доступа Facebook не может быть расширен

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

13
задан Community 23 May 2017 в 12:09
поделиться