You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests创建Google Drive共享文件夹?遇400错误求助

问题解决:Drive文件夹共享返回400 Invalid Request错误

核心问题

你的代码向Drive API发送请求时,没有以正确的JSON格式传递payload。虽然headers里指定了Content-Type: application/json,但使用data=payload会让requests将字典以application/x-www-form-urlencoded格式发送,不符合API的JSON格式要求。普通文件可能因API兼容逻辑能正常工作,但文件夹的权限校验更严格,直接返回了400错误。

修复代码

修改requests.post的参数,把data=payload替换为json=payload,让requests自动将字典序列化为JSON字符串并适配格式要求:

def GetLinkToFile(file_id, file2):
    url = f'https://www.googleapis.com/drive/v3/files/{file_id}/permissions?supportsAllDrives=true'
    headers = {'Authorization': f'Bearer {access_token}'}
    payload = {'type': 'anyone', 'role': 'reader'}
    # 使用json参数传递载荷,自动处理JSON序列化与Content-Type
    res = requests.post(url, json=payload, headers=headers)
    # 建议添加响应检查,方便排查后续问题
    if res.status_code != 200:
        print("权限设置失败:", res.json())
    link = file2['alternateLink']
    pyperclip.copy(link)

额外优化建议

  1. 移除手动设置的Content-Type:使用json参数时,requests会自动添加Content-Type: application/json,无需手动指定,避免格式冲突。
  2. 补充错误处理:添加状态码检查,打印错误响应内容,能快速定位后续可能出现的权限或参数问题。
  3. 确认alternateLink字段有效性:Drive v3 API默认不返回alternateLink,如果file2是通过API获取的,需要在请求时指定fields=alternateLink,...来包含该字段,否则可能触发KeyError。

内容的提问来源于stack exchange,提问作者gey ser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:13:17