Gmail API OAuth2错误redirect_uri_mismatch:Python快速入门教程问题求助
搞定Gmail API OAuth授权的400错误
嘿,我之前碰到好几个开发者都踩过这个坑——你看到的&是HTML实体转义后的字符,这会让Google的OAuth服务器认不出正确的重定向URI,直接给你返回400错误。咱们一步步来解决:
1. 先揪出URL转义的问题
快速入门脚本默认用run_local_server()来启动本地授权服务,但有时候因为环境或者代码里不小心的处理,会把参数分隔符&转成&。你可以先试试临时解决方案:把授权URL里所有的&替换成&,再复制到浏览器里访问,看看能不能正常授权。
如果临时方案有用,那咱们从根源修复:
- 检查你的脚本里有没有用到
html.escape这类HTML转义函数处理授权URL,有的话直接去掉; - 要是你自己手动拼接授权URL参数,别硬写
&,用urllib.parse.urlencode()来处理参数,它会自动生成正确的分隔符。
2. 再核对OAuth客户端的配置细节
虽然你说已经确认过重定向URI,但还是再仔细检查一遍:
- 你在API控制台创建的是桌面应用类型的OAuth客户端ID吗?因为本地服务器模式属于桌面应用范畴,要是选成Web应用,哪怕URI对了也会报错;
- 控制台里的重定向URI要和脚本实际用的完全一致,比如脚本默认是
http://localhost:随机端口/,要是你指定了固定端口(比如8080),就得填http://localhost:8080/,连末尾的斜杠都不能差; - 别搞混HTTP和HTTPS,本地授权用的是HTTP,别填成HTTPS了。
3. 清理旧凭据缓存
有时候之前错误的授权凭据会留在本地缓存里,导致问题反复出现。你可以删除这两个地方的文件:
- 脚本生成的
token.json文件(就在脚本目录里); - 系统级的缓存:Windows是
%APPDATA%\gcloud\credentials,macOS/Linux是~/.config/gcloud/credentials。
删完之后重新运行脚本,重新走一遍授权流程,应该就能正常跳转了。我之前帮好几个朋友解决过这个问题,大部分都是转义字符或者客户端类型选错的锅~
内容的提问来源于stack exchange,提问作者kashiB
相关产品推荐
相关产品推荐

