You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的google-auth-oauthlib库实现Google OAuth时,如何仅获取登录用户的邮箱地址?

使用Python的google-auth-oauthlib库实现Google OAuth时,如何仅获取登录用户的邮箱地址?

嗨,我之前也碰到过一模一样的困惑,其实完全不需要加那些多余的API权限(比如gmail-readonly),用google-auth-oauthlib本身就能轻松拿到用户邮箱,核心是设置正确的OAuth授权范围,再利用库内置的方法解析用户信息就行,我给你一步步梳理:

第一步:配置正确的OAuth Scope

你只需要在初始化OAuth流程时,指定两个必要的Scope,完全不需要额外权限:

  • openid:开启OpenID Connect模式,这是获取用户身份信息的基础
  • https://www.googleapis.com/auth/userinfo.email:专门用于获取用户邮箱的权限

第二步:通过已授权凭证获取邮箱

当用户完成授权回调后,拿到credentials对象,有两种简单的方式提取邮箱:

方法1:直接解析ID Token(推荐,无需额外请求)

Google OAuth返回的credentials里包含id_token(一个JWT令牌),里面已经封装了用户邮箱信息,用库自带的方法就能解析:

from google_auth_oauthlib.flow import Flow
from google.oauth2 import id_token
from google.auth.transport.requests import Request

# 初始化Flow时指定正确的Scope
flow = Flow.from_client_secrets_file(
    "你的client_secret.json路径",
    scopes=["openid", "https://www.googleapis.com/auth/userinfo.email"],
    redirect_uri="你的回调地址"
)

# 处理授权回调的示例逻辑
def handle_oauth_callback(request):
    # 获取授权令牌
    flow.fetch_token(authorization_response=request.url)
    credentials = flow.credentials

    # 验证并解析ID Token
    try:
        id_info = id_token.verify_oauth2_token(
            credentials.id_token,
            Request(),
            credentials.client_id  # 你的OAuth客户端ID
        )
        # 提取用户邮箱
        user_email = id_info.get("email")
        print(f"登录用户邮箱:{user_email}")
        # 这里可以添加你的业务逻辑
    except ValueError:
        print("ID Token验证失败,请检查授权流程")

方法2:调用用户信息端点(可选)

如果更习惯API请求的方式,也可以用credentials里的访问令牌调用Google用户信息端点,这个请求不需要额外权限,只要有上面的Scope就能访问:

import requests

# 在拿到credentials之后执行
headers = {"Authorization": f"Bearer {credentials.token}"}
response = requests.get("https://www.googleapis.com/oauth2/v1/userinfo", headers=headers)
user_info = response.json()
user_email = user_info.get("email")

最后要注意的细节

  • 确保在Google Cloud Console的OAuth同意屏幕中,已经添加了上述两个Scope,否则用户授权时会提示权限不足
  • 如果你的应用面向外部用户,需要把应用发布到「生产」状态,否则只有测试用户列表里的账号能正常授权

这样就完全不需要依赖额外的API权限,只用google-auth-oauthlib就能拿到用户邮箱啦!

备注:内容来源于stack exchange,提问作者enoeht

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:33:12