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



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

  1. 提示用户的电子邮件地址
  2. 生成授权url并在嵌入式浏览器中打开
  3. Gmail要求用户提供电子邮件地址和密码,以及我的应用程序所需的权限
  4. 获取访问令牌和刷新令牌
  5. 使用在步骤1中获得的电子邮件地址和在步骤4中获得的访问令牌形成承载令牌
  6. 然后我使用AUTHENTICATE XOAUTH2%bear_token%来访问用户的邮件

这很好用。但我不喜欢用户必须输入两次电子邮件地址——第一步和第三步。事实上,用户可以在步骤1和3中输入不同的电子邮件地址,因此我在步骤6中收到"无效凭据"。

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

使用Google Identity Plateform,您可以通过在授权请求中添加"openid"one_answers"email"作用域来验证用户(请参阅本页)。当您收到访问令牌时,您还将收到一个包含用户电子邮件的ID令牌。

使用这些作用域,您可以摆脱步骤1。并在步骤4检索电子邮件"获取访问令牌、ID令牌和刷新令牌。"验证ID令牌的详细信息在此页面上

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

对于Hotmail(Live.com),我们可以在步骤4之后提出其他请求:得到https://apis.live.net/v5.0/me?access_token=ACCESS_TOKEN

相关内容

  • 没有找到相关文章

最新更新