使用Google Calendar API时遇到Safari无法连接服务器问题
修复方案
- 端口占用问题:你代码中为
run_local_server强制指定了固定端口8080,若该端口被其他进程占用,认证用的本地临时服务会启动失败,Safari跳转回调地址时就会提示无法连接服务器。你可以直接删除port参数让库自动选择空闲端口,或先执行lsof -i:8080检查端口占用,终止占用进程后再重试。 - 重定向URI配置缺失:需要在Google Cloud控制台对应的OAuth 2.0客户端ID配置中,把
http://localhost:8080/添加到「授权重定向URI」列表中,配置缺失会导致认证成功后的回调请求被拦截,本地服务提前终止也会触发访问报错。 - 应用类型适配问题:当前用的
InstalledAppFlow仅适用于桌面端、命令行类应用,如果你开发的是Web应用,需要更换为Web类型的OAuth客户端ID,使用适配Web场景的认证流程,不要使用本地服务回调的方案。 - Safari安全策略限制:部分版本Safari默认拦截OAuth跳转后对本地端口的访问,你可以给
run_local_server添加open_browser=False参数,运行代码后复制终端输出的认证链接到Chrome内核浏览器打开验证,若可正常完成认证则是Safari安全策略导致,调整Safari安全设置放开本地端口访问限制即可。
修改后的代码示例:
# 自动选择空闲端口无需手动指定 creds = flow.run_local_server() # 若需固定端口+手动打开浏览器,用下方写法 # creds = flow.run_local_server(port=8080, open_browser=False)
内容的提问来源于stack exchange,提问作者Matt Nguyen
相关产品推荐
相关产品推荐

