Google OAuth2返回与配置提交不符的redirect_uri引发匹配错误
解决Google OAuth redirect_uri_mismatch问题
核心问题排查与修复
修正授权参数格式:从你生成的授权URL能看到,
response_type、client_id、scope等参数都是数组格式(URL编码后显示为%5B%27code%27%5D这类形式),但Google OAuth服务要求这些参数为字符串而非数组。你需要把代码中的参数值从列表改成单个字符串,示例如下:# 错误写法 params = { 'response_type': ['code'], 'client_id': ['894308859100-7kdu4silhlsajesj69t1asrp3o6c5bik.apps.googleusercontent.com'], # ...其他数组参数 } # 正确写法 params = { 'response_type': 'code', 'client_id': '894308859100-7kdu4silhlsajesj69t1asrp3o6c5bik.apps.googleusercontent.com', 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/userinfo.profile', 'state': 'Python-YouTube', 'access_type': 'offline', 'redirect_uri': 'http://127.0.0.1:8080' }数组格式的参数会导致Google解析异常,进而返回错误的重定向URI。
补充配置重定向URI:在Google Cloud Console的OAuth客户端配置中,同时添加
http://127.0.0.1:8080和http://localhost:8080。部分OAuth客户端库在本地运行时会自动将127.0.0.1转换为localhost,添加双地址可避免匹配问题。清理本地缓存:删除项目中生成的
token.json或其他OAuth缓存文件,重新发起授权请求,避免旧配置干扰。检查代码中的URI替换逻辑:确认使用的OAuth库(如google-auth-oauthlib)是否存在自动替换redirect_uri的逻辑,若有则手动指定固定的
http://127.0.0.1:8080。
内容的提问来源于stack exchange,提问作者Zac
相关产品推荐
相关产品推荐

