首页 文章

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

提问于
浏览
0

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

  • 提示用户电子邮件地址 .

  • 生成授权URL并在嵌入式浏览器中打开它 .

  • Gmail要求用户提供电子邮件地址和密码,以及我的申请所需的权利 .

  • 获取访问令牌和刷新令牌 .

  • 表格承载令牌,使用在步骤1中获得的电子邮件地址和在步骤4中获得的访问令牌 .

  • 然后我使用AUTHENTICATE XOAUTH2%bearer_token%来访问用户的邮件 .

这很好用 . 但我不喜欢用户必须两次输入电子邮件地址 - 分1步和3步 . 实际上,用户可以在步骤1和3中输入不同的电子邮件地址,因此我在步骤6中收到“无效凭据” .

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

2 回答

  • 0

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

    使用这些范围,您可以删除步骤1.并在步骤4“获取访问令牌, ID token 和刷新令牌”中检索电子邮件 . 验证ID令牌的详细信息是on this page

  • 0

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

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

相关问题