Google Gmail API OAuth 2.0报错Error 400: redirect_uri_mismatch求助
问题核心原因
该redirect_uri_mismatch报错本质是你创建的OAuth客户端类型与本地VS Code/Jupyter的运行环境不匹配:Python官方的google-auth库在本地运行时默认会使用随机端口的本地地址作为重定向URI,每次端口变动都会触发新的不匹配,仅反复添加报错URI无法彻底解决问题。
具体解决步骤
- 重新创建正确类型的OAuth客户端ID
打开Google Cloud Console的「API和服务→凭据」页面,删除现有客户端ID,重新创建时客户端类型选择「桌面应用」,不要选择网页应用、Web应用等其他类型。创建完成后下载新的credentials.json文件,替换项目中原有的旧凭据文件。 - 固定重定向URI(适配Jupyter运行场景)
如果你是在Jupyter Notebook中运行代码,需要手动指定固定重定向URI,避免随机端口变动:
在代码的授权流初始化位置添加redirect_uri参数,示例配置:flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES, redirect_uri='http://localhost:8080/')
之后回到Google Cloud Console的OAuth配置页面,在重定向URI列表中添加http://localhost:8080/,注意末尾的斜杠不可省略,保存配置后等待5分钟生效。 - 补充测试用户配置
如果你没有将应用设置为上线状态,必须在OAuth同意屏幕的「测试用户」列表中添加你自己的Gmail账号,否则会触发应用未验证的报错,无法完成授权。
注意事项
- 桌面应用类型的OAuth客户端不需要公网地址、不需要上线应用,完全满足本地数据科学项目的使用需求
- 每次修改Google Cloud Console的OAuth配置后,最长需要5分钟才能生效,修改后不要立刻测试
- 如果运行代码后没有自动弹出浏览器授权页面,控制台会输出手动授权链接,打开链接完成授权后将返回的授权码粘贴回控制台即可完成授权流程
内容的提问来源于stack exchange,提问作者april
相关产品推荐
相关产品推荐

