Google входит в приложение Android, чтобы использовать бэкэнд Cloud Endpoints

Я пишу приложение для Android с бэкэндом Google Cloud Endpoints и хочу ограничить свой бэкэнд входом в Google.

Я выполнил инструкции Android и успешно вошел в систему. Другими словами, я получил токен, который затем могу передать на сервер и проверить пользователя, за которого он выступает. Отлично.

Тем не менее, я скучаю по большей картине здесь. Вопросы:

  1. Должен ли я отправлять этот токен с каждым запросом обратно на сервер и повторять процесс проверки его в каждом запросе?
  2. Если да, токен истекает в какой-то момент (я думаю, 1 час). Я полагаю, что пользователь не должен войти снова, там должно быть, чтобы избежать этого, верно?
  3. Есть ли способ обновить токен (я думаю, что Google Signin - это OAuth2)?
  4. И самое главное, является ли все это стандартным способом, которым кто-то использует вход в Google для защиты своего бэкенда? Я ожидал, что это будет очень простой процесс, поскольку я использую только продукты Google. Тем не менее, я теряюсь в страницах и страницах документации по Android и Cloud Enpoints с частями головоломки.

Любая помощь или понимание приветствуется.

3 ответа

Решение

Я не использовал аутентификацию Android, но Google использует Outh2 для всей своей аутентификации. Google SDK могут помочь вам избавиться от боли при использовании oauth2. Ответить на ваши вопросы

  1. Да. Вы находитесь в мире аутентификации на основе токенов и отправляете токен при каждом запросе.
  2. Да. токен истекает через час. Чтобы обойти это, когда вы впервые выполняете аутентификацию oauth2, вы также получаете токен обновления. Когда срок действия токена пользователя истекает, вы используете токен обновления, чтобы получить новый токен. Этот токен обновления может храниться на стороне клиента. Во время одного из запросов клиент обнаружит, что срок действия существующего токена истек, и запросит новый токен, используя токен обновления.
  3. Да, вы используете URL токена обновления Google, чтобы использовать токен обновления и получить новый токен. Ниже приведены важные URL-адреса Google.
  4. Это действительно процесс oauth2, мой друг.

так как вы используете облачную конечную точку, я считаю, что вы будете создавать конечные точки аутентификации.

Обычно вы делаете следующие конечные точки при выполнении аутентификации oauth2 с помощью поставщика услуг (google, facebook, github и т. Д.):

https://webiste.com/auth/signin/{provider}
https://webiste.com/auth/callback/{provider}
https://webiste.com/auth/refresh/{provider}

Ниже приведены URL-адреса Google для oauth2, которые вы будете использовать:

oauth_url: 'https://accounts.google.com/o/oauth2/v2/auth',  //start auth
token_url: 'https://accounts.google.com/o/oauth2/token',   //get id_token, access_token, refresh_token token
refresh_token_url : 'https://www.googleapis.com/oauth2/v4/token',
token_info_url: 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=',  //validate token

Вы также можете просмотреть документацию Google oauth2 по адресу https://developers.google.com/identity/protocols/OAuth2.

Для этого лучше всего использовать 3-сторонний код. Это займет намного меньше времени, будет иметь гораздо меньше ошибок и будет очень легко распространяться на другие методы позже. Я бы порекомендовал Firebase, потому что он очень простой, бесплатный, хорошо работает и принадлежит Google.

Я думаю, что вы должны Firebase UI Android Library для аутентификации. Он предоставляет вам параметры входа в Google, Facebook, E-mail, Twitter и Github, и хорошая часть заключается в том, что это можно сделать, написав всего несколько строк кода. Для получения дополнительной информации нажмите здесь.

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