2016-06-07 2 views
0

Я использую аутентификацию OAuth2, чтобы получить доступ к почте пользователя Gmail (и Hotmail) с помощью IMAP. С этой целью я осуществил следующие шаги:Возможно ли получить адрес электронной почты пользователя, чья учетная запись обращается с помощью OAuth2

  1. Подпрашивает адрес электронной почты пользователя.
  2. Создать авторизационный URL-адрес и открыть его во встроенном браузере.
  3. Gmail запрашивает адрес электронной почты и пароль от пользователя и права, необходимые для моего приложения.
  4. Получить токен доступа и токен обновления.
  5. Тонер-маркер носителя, используя адрес электронной почты, полученный на шаге 1, и токен доступа, полученный на этапе 4.
  6. Затем я использую AUTHENTICATE XOAUTH2% bearer_token%, чтобы получить доступ к электронной почте пользователя.

Это прекрасно работает. Но мне не нравится, что пользователю нужно вводить адрес электронной почты дважды - на 1 и 3 шага. Фактически, пользователь может вводить разные адреса электронной почты на шагах 1 и 3, поэтому я получаю «Недействительные учетные данные» на шаге 6.

Итак, возникает вопрос: можно ли получить адрес электронной почты пользователя, к которому обращается доступ ? Затем я могу пропустить шаг 1.

ответ

0

С помощью формы Google Identity Plateform вы можете аутентифицировать пользователя, добавив области «openid» и «email» к вашему запросу авторизации (см. this page). Когда вы получите токен доступа, вы также получите токен идентификатора, который содержит электронное письмо пользователя.

Используя эти области действия, вы можете избавиться от шага 1. и получить электронное письмо на шаге 4 «Получить токен доступа, Идентификатор ID и токен обновления». Детали для проверки идентификатора ID: on this page

+0

чем вы, @Spomky. Только одно примечание: «openid» не требуется, «электронной почты» достаточно. – Aleksey

0

Как @Spomky написал, для Google мы можем использовать дополнительную область «email», чтобы получить идентификатор доступа и извлечь из него адрес электронной почты.

Для Hotmail (Live.com) мы можем сделать дополнительный запрос после шага 4: ПОЛУЧИТЬ https://apis.live.net/v5.0/me?access_token=ACCESS_TOKEN

Смежные вопросы