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

使用Python调用Gmail API搜索邮件遇权限问题求助

解决Gmail API未授权请求及结合token.json发起授权GET请求的方法

直接GET请求返回Unauthorized的原因

Gmail API的所有接口请求都必须携带有效的OAuth 2.0访问令牌,你发起的无认证信息的GET请求不符合权限要求,并非文档过时。

结合token.json发起授权GET请求的实现

从token.json加载的Credentials对象包含合法的访问令牌,只需将其添加到请求头的Authorization字段中即可:

import requests
import os
from google.oauth2.credentials import Credentials

# 根据实际需求调整权限范围,示例为只读权限
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']

if os.path.exists("token.json"):
    creds = Credentials.from_authorized_user_file("token.json", SCOPES)
    # 构造带认证信息的请求头
    headers = {'Authorization': f'Bearer {creds.token}'}
    # 发起授权请求
    response = requests.get(
        'https://www.googleapis.com/gmail/v1/users/me/messages?q=in:sent after:2014/01/01 before:2014/02/01',
        headers=headers
    )
    # 处理响应结果
    if response.ok:
        print(response.json())
    else:
        print(f"请求失败:状态码{response.status_code},详情:{response.json()}")

关键注意点

  • 确认SCOPES的权限覆盖你的操作需求,比如读取邮件用gmail.readonly,发送邮件则需要gmail.send等对应权限。
  • 若访问令牌过期,Credentials对象会自动利用token.json中的刷新令牌更新令牌,无需手动干预。

内容的提问来源于stack exchange,提问作者Tommy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:52:09