Django对接Google API OAuth2报insecure_transport错误如何解决?
解决方案
这个报错是oauthlib库的本地校验规则触发的,Google本身允许localhost环境使用HTTP回调用于开发测试,不用调整Google Cloud后台的配置就可以通过以下方法解决:
方案1:本地调试临时关闭安全校验(推荐开发用,最快)
该方案仅适用于本地DEBUG开发环境,严禁在生产环境开启。
你可以通过设置OAUTHLIB_INSECURE_TRANSPORT环境变量跳过HTTP校验:
- 临时生效(运行项目前执行命令):
- Linux/macOS终端执行:
export OAUTHLIB_INSECURE_TRANSPORT=1 - Windows CMD执行:
set OAUTHLIB_INSECURE_TRANSPORT=1 - Windows PowerShell执行:
$env:OAUTHLIB_INSECURE_TRANSPORT=1
- Linux/macOS终端执行:
- 永久生效(Django项目内配置):
打开项目settings.py文件,添加如下代码,仅在DEBUG模式下开启配置,避免生产环境误开启:import os if DEBUG: os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
配置完成后直接重启Django服务即可正常使用HTTP的localhost回调地址。
方案2:本地配置HTTPS环境(更贴近生产场景)
如果你希望本地开发和生产环境保持一致,可以给本地Django服务配置HTTPS:
- 安装HTTPS扩展包:
pip install django-sslserver - 打开
settings.py,把sslserver加入INSTALLED_APPS列表:INSTALLED_APPS = [ # ... 其他原有应用 'sslserver', ] - 改用HTTPS模式启动Django服务:
python manage.py runsslserver 8000 - 把你代码里的
redirect_uri修改为https://localhost:8000/google/oauthcallback,同时去Google Cloud控制台的OAuth凭据配置里,把这个HTTPS地址加入授权回调地址列表即可。
生产环境注意事项
生产环境必须关闭OAUTHLIB_INSECURE_TRANSPORT配置,使用正规CA机构签发的HTTPS证书配置服务,禁止使用自签名证书用于公开访问的生产环境。
内容的提问来源于stack exchange,提问作者Alexandro
相关产品推荐
相关产品推荐

