是否可以获取使用OAuth2访问其帐户的用户的电子邮件地址

时间:2016-06-07 14:48:38

标签: oauth-2.0 google-oauth2 hotmail

我使用OAuth2身份验证来使用IMAP访问用户的Gmail(和Hotmail)邮件。 为此,我实施了以下步骤:

  1. 提示用户电子邮件地址。
  2. 生成授权网址并在嵌入式浏览器中打开。
  3. Gmail要求用户提供电子邮件地址和密码,以及我的申请所需的权利。
  4. 获取访问令牌和刷新令牌。
  5. 使用步骤1中获取的电子邮件地址和步骤4中获取的访问令牌表单承载令牌。
  6. 然后我使用AUTHENTICATE XOAUTH2%bearer_token%来访问用户的邮件。
  7. 这很好用。但我不喜欢用户必须两次输入电子邮件地址 - 分1步和3步。实际上,用户可以在步骤1和3中输入不同的电子邮件地址,因此我收到"无效的凭据"在第6步。

    所以问题是:是否有可能获得正在访问其帐户的用户的电子邮件地址?然后我可以跳过第1步。

2 个答案:

答案 0 :(得分:0)

使用Google Identity Plateform,您可以通过添加" openid"来验证用户身份。和"电子邮件"您的授权请求的范围(请参阅this page)。 当您收到访问令牌时,您还会收到一个包含用户电子邮件的ID令牌。

使用这些范围,您可以摆脱步骤1.并在步骤4"获取访问令牌, ID令牌和刷新令牌时检索电子邮件。" 验证ID令牌的详细信息为on this page

答案 1 :(得分:0)

正如@Spomky所写,对于谷歌我们可以使用额外的范围"电子邮件"获取id令牌并从中提取电子邮件地址。

对于Hotmail(Live.com),我们可以在第4步之后提出额外请求: 获取https://apis.live.net/v5.0/me?access_token=ACCESS_TOKEN