Как правильно организовать работу с ВКонтакте API в Standalone-приложении?
Здравствуй, уважаемое Хабрасообщество!
В рамках повышения собственной квалификации решил сделать простое приложение под Android, использующее API ВКонтакте. И у меня возникло несколько вопросов.
1. Как правильно организовать работу с access token? У него ведь есть время жизни (expires in), то есть во время работы моего приложения это время может закончится и тогда я не смогу выполнять вызовы API. Что делать в таком случае? Кидать пользователя на страницу авторизации?
2. Правильно ли запрашивать access token с правами доступа «Offline»? Ведь пользователя это может смутить, да и первую проблему не решит, ведь пользователь может в любой момент отменить разрешения для приложения на своей странице ВКонтакте.
Вы спрашиваете про приложение для Android — видимо, пользователь его будет использовать со своего телефона. И тут же его Тень отправится в VK отключать доступ этому приложению?
У меня ситуация с отказом жетона возможна, т.к. жетон сохраняется и на сервере, чтобы выполнять за пользователя некоторые действия, когда того нет онлайн. Вызов API вернёт ошибку, которую надо обрабатывать: генерится письмо пользователю, «не удалось сделать то-то, потому, что жетон более не дейстивтелен. Если хотите, чтобы было — повторите авторизацию так-то», например.
Ну вот мне и хотелось бы узнать, как правильно обработать ситуацию с недействительным жетоном. Сейчас у меня это реализовано так: я знаю время окончания действия жетона, если оно истекло, то я отправляю пользователя на страницу авторизации. Если время не истекло, пытаюсь сделать вызов API. Если происходит ошибка, то опять кидаю на страницу авторизации.
Брать offline жетон я не хочу, так как лично меня всегда смущает, когда Android приложения просят доступ в любое время без моего ведома. К тому же если пользователь вдруг удалит права для моего приложения, то я не хочу, чтобы оно падало с неведомой ошибкой. Вот мне и интересно как все вышеперечисленное правильно реализовать, ибо не хочу быдлокодить и писать приложение, которое работает в 1 случае из 10.
Если я правильно понял документацию, то offline используется только для серверов. В своих приложениях под iOS прошу пользователя ввести логин/пароль если токен инвалидируется. Если куки сохраняются, то процесс прозрачный для пользователя, так как запрос формы аутентификации сразу возвращает новый токен.
В данный момент — да. Но я сейчас подумываю (идея пришла когда писал первый ответ сюда :)) немного поменять схему. А именно: отправлять запрос, куки же прикрепляются автоматом. Потом анализировать ответ, если там форма — отображать ее пользователю. Если там токен — брать его и не мучать пользователя вообще.