Эффективный OAuth для API Google с телефона Android

Я пытаюсь получить Авторизацию для Google Buzz, Контакты из приложения Android. Поток похож на это.

  • Пользователь выбирает, хочет ли он использовать Buzz.
  • Используя OAuth/Client Auth, нам нужно получить одноразовый код авторизации.
  • Этот код будет использоваться веб-службой для периодического чтения каналов Buzz.

Теперь проблема заключается в том, как получить код авторизации (не временный токен) из приложения Android и отправить его веб-службе. Я мог бы использовать обычный OAuth2.0 и использовать мой веб-сервис в качестве URL перенаправления для получения кода. Но в таком случае, как я могу сообщить веб-службе, что код принадлежит какому пользователю? Могу ли я передать дополнительную информацию с танцем OAuth?

1 ответ

Я настоятельно рекомендую использовать OAuth 2. Поток намного лучше для конечного пользователя, и намного проще реализовать что-то подобное. Кроме того, он использует токены на предъявителя, что означает, что вы можете поддерживать свою сторону сервера обновлений токенов там, где она действительно безопасна, и отправлять токены доступа на Android только тогда, когда это необходимо.

Недостатком этого подхода является то, что каждый раз, когда ваше приложение загружается, ему необходимо позвонить домой, чтобы получить последний токен доступа. Но, получив этот токен доступа, он может делать любые вызовы API, которые ему необходимы, непосредственно в API Buzz и Contacts.

Однако, чтобы сделать это, вы не передаете дополнительную информацию с танцем OAuth. Вместо этого вашему Android-приложению необходимо уже точно определить, какой пользователь вошел в ваше приложение, а затем убедиться, что сервер только отправляет обратно маркеры доступа, связанные с аутентифицированным пользователем. Если у него нет обновленного токена доступа для этого пользователя, ему необходимо отправить запрос на сервер авторизации Google, чтобы получить последний токен доступа, а затем передать его клиенту. Так что, безусловно, есть большой потенциал для некоторой задержки, потому что это, как правило, синхронный вызов, но обычно это небольшая цена за преимущества, которые дает OAuth 2 по сравнению с OAuth 1.

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