首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌OAuth应用程序接口获取用户的电子邮件地址?

谷歌OAuth应用程序接口获取用户的电子邮件地址?
EN

Stack Overflow用户
提问于 2014-06-27 09:24:39
回答 8查看 102.4K关注 0票数 74

我正在使用自己的个人谷歌账号玩谷歌的Gmail2.0游乐场,但我似乎无法在游乐场上找回我的OAuth地址。

我使用的作用域是:

代码语言:javascript
运行
复制
email profile https://www.googleapis.com/auth/plus.login

但是当我调用API时:

代码语言:javascript
运行
复制
https://www.googleapis.com/oauth2/v2/userinfo

我获得了用户的各种信息,比如姓、名、性别、图片等,但它不会返回用户的电子邮件。

如何检索用户的电子邮件地址?是我的作用域错误还是调用了错误的API?我觉得这应该很简单,但我确实已经尝试了几个小时,但我找不到一个API和作用域组合来一致地提供用户的电子邮件地址。

EN

回答 8

Stack Overflow用户

发布于 2015-04-01 03:52:23

您需要添加https://www.googleapis.com/auth/userinfo.email作用域或用它替换https://www.googleapis.com/oauth2/v2/userinfo。如果您使用的是他们提供的HTML示例,则可以列出由空格分隔的多个作用域。

代码语言:javascript
运行
复制
<span
  class="g-signin"
  data-callback="signInCallback"
  data-clientid="{{ plus_id }}"
  data-cookiepolicy="single_host_origin"
  data-requestvisibleactions="http://schemas.google.com/AddActivity"
  data-scope="https://www.googleapis.com/auth/plus.login   
  https://www.googleapis.com/auth/userinfo.email">
</span>
票数 14
EN

Stack Overflow用户

发布于 2018-07-12 08:53:37

要使用OAuth 2.0登录谷歌,不需要单独请求获取用户的电子邮件。

当Google调用回调URL时,它在查询字符串中提供一个code,您可以使用该URL来交换访问令牌和ID令牌。ID令牌是一个JWT,它包含有关用户的身份信息,其中包括电子邮件地址。

更多信息请点击这里:https://developers.google.com/identity/protocols/oauth2/openid-connect

票数 11
EN

Stack Overflow用户

发布于 2020-07-07 01:07:22

要检索电子邮件地址,您需要包括本文档中提到的作用域:"https://www.googleapis.com/auth/userinfo.email“。如果在生成刷新令牌时包含此作用域,则应该能够通过发出以下请求来获取身份验证用户的电子邮件地址:

您可以使用自己的访问令牌调用它,然后将给出响应

https://www.googleapis.com/oauth2/v3/userinfo?access_token="YOUR_ACCESS_TOKEN"

响应将如下所示

代码语言:javascript
运行
复制
{
  "sub": "1057abc98136861333615xz",
  "name": "My Name",
  "given_name": "My",
  "family_name": "Name",
  "picture": "https://lh3.googleusercontent.com/a-/AOh14qiJarwP9rRw7IzxO40anYi4pTTAU_xseuRPFeeYFg",
  "email": "MyName@gmail.com",
  "email_verified": true,
  "locale": "en"
}

或者,您可以只编写一个函数

代码语言:javascript
运行
复制
import requests
def get_user_email(access_token):
    r = requests.get(
            'https://www.googleapis.com/oauth2/v3/userinfo',
            params={'access_token': access_token})
    return r.json()
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24442668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档