Google Drive API授权后返回404错误,服务器适配问题求助
Google Drive API 404错误及服务器部署解决方案
一、先排查404错误的直接原因
- 文件ID或权限问题:确认
file_id完全正确,目标文件存在,且授权账号已获取该文件的读取权限(如果是共享文件,要确保账号被添加为协作者)。 - Export接口使用限制:
files().export_media()仅支持Google原生格式文件(如Google Docs、Sheets、Slides),如果目标文件是普通docx、PDF等非原生格式,必须改用files().get_media()下载,而非export。 - 代码语法问题:你提供的代码中
export_media调用未闭合括号且缺少execute()执行方法,补全后示例:
byteData = service.files().export_media( fileId = file_id, mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ).execute()
二、服务器部署的授权配置方案
本地开发依赖localhost回调的OAuth授权在服务器上无法运行,需改用以下两种方案:
方案1:使用服务账号(推荐)
- 登录Google云控制台,创建服务账号并下载其密钥JSON文件。
- 将目标Drive文件共享给服务账号密钥中的
client_email邮箱,赋予读取权限。 - 修改认证逻辑,用服务账号密钥初始化API服务:
from google.oauth2 import service_account from googleapiclient.discovery import build SCOPES = ['https://www.googleapis.com/auth/drive.readonly'] SERVICE_ACCOUNT_FILE = '你的服务账号密钥文件.json' credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) service = build('drive', 'v3', credentials=credentials)
方案2:持久化刷新令牌
- 在本地完成OAuth授权流程,获取包含
refresh_token的token.json文件(授权后自动生成)。 - 将token.json上传至服务器,修改
Create_Service逻辑,让程序读取该文件自动用refresh_token刷新授权,无需手动重复授权。 - 确保服务器上的token.json文件权限正确,程序可正常读取。
三、额外注意事项
- 确认服务器网络可正常访问Google API,无防火墙或代理拦截请求。
- 检查Google云控制台中Drive API已启用,未启用会导致404或权限报错。
- 尽量缩小权限范围,仅需读取文件则用
drive.readonly,避免使用过大的drive权限。
内容的提问来源于stack exchange,提问作者kristaps Strods
相关产品推荐
相关产品推荐

