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

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

Мой вопрос

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

Фон

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

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

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

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

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

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

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

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

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

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

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

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

Facebook-Android-SDK на GitHub

Facebook Android Учебник

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

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

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

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

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

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

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

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

2 ответа

Я не знаю, как разрабатывать Android, но если у вас возникли проблемы с этой функцией, возможно, в Android есть аналогичная функция CURL, которая позволит вам вызывать https://graph.facebook.com/oauth/access_token?
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN

(Google открыл: http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html о том, как CURL с Android)

Попробуйте изменить время REFRESH_TOKEN_BARRIER, так что вам не придется ждать 24 часа каждый раз, когда вы хотите проверить. Я изменил мой примерно на 2 минуты, и я смог увидеть, что маркер доступа фактически расширялся, когда я перезапустил приложение через 2 минуты.

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