Google Colab运行Gmail API快速入门代码授权时提示无法找到localhost
问题原因
报错是因为InstalledAppFlow.run_local_server()方法会在运行代码的机器上启动本地HTTP服务接收授权回调,你在本地Jupyter运行时,代码跑在自己的电脑上,浏览器访问本地localhost可正常回调;但Colab是远端云服务器,启动的是远端服务器的localhost,你的本地浏览器无法访问到该地址,因此跳转报错。
解决方案
注意:请先确认你在Google Cloud控制台创建OAuth凭证时,应用类型选择的是桌面应用,否则授权流程会报错。
方案一:改用手动授权码模式(无需调整凭证配置)
直接修改代码中授权流的调用逻辑,替换掉run_local_server相关代码即可:
把原代码里的
creds = flow.run_local_server(port=0)
替换为
# 生成授权链接 auth_url, _ = flow.authorization_url(prompt='consent') print('请访问以下链接完成授权,复制授权码后粘贴到下方输入框:') print(auth_url) # 接收用户输入的授权码,换取凭证 code = input('输入授权码: ') flow.fetch_token(code=code) creds = flow.credentials
修改后重新运行代码,按照提示点击授权链接,完成授权后复制平台返回的授权码粘贴回Colab的输入框回车即可完成授权。
方案二:本地预生成token.json上传到Colab
- 先在你本地的Jupyter或者Python环境运行一遍原代码,完成授权后会在本地生成
token.json文件 - 把该
token.json文件上传到Colab的/content目录 - 重新运行Colab代码,会直接读取已有的token凭证,无需再走授权回调流程,可直接调用API。
内容的提问来源于stack exchange,提问作者Steve Deltora
相关产品推荐
相关产品推荐

