使用Gmail账号及Java API无法转让Google Drive txt文件所有权
问题核心原因
你遇到的txt文件所有权转让失败和请求参数无关,代码逻辑本身没有问题,不需要根据mimeType做额外调整,是Google Drive的所有权转让规则限制导致的,具体分为两种场景:
- 个人Gmail账号场景:仅支持转让非Google Workspace原生格式的二进制文件所有权,Google原生格式(包括自动转换生成的Google Docs、Sheets等文件)无法在个人账号之间转让所有权。
你上传的txt文件大概率触发了Google Drive的自动格式转换规则:如果你开启了Drive设置里的「将上传的文件转换为Google 文档编辑器格式」选项,上传的txt会被自动转成Google Docs原生文件,mimeType为application/vnd.google-apps.document,因此无法转让所有权;而你上传的doc文件未被转换为原生格式,属于二进制文件,所以可以正常转让。 - Google Workspace组织场景:仅同组织域下的账号可以转让原生格式文件的所有权,跨域或者个人账号和组织账号之间也无法转让原生格式文件所有权。
验证方法
调用Drive API的files.get接口获取异常txt文件的mimeType字段:
- 如果返回值为
text/plain,属于普通二进制txt文件 - 如果返回值为
application/vnd.google-apps.document,属于已经被转换的Google原生格式文件
解决方案
- 个人账号使用场景:关闭Drive的自动格式转换设置,重新上传txt文件,确认文件mimeType为
text/plain后再发起所有权转让请求即可正常执行。 - Workspace组织使用场景:确认两个转让账号属于同一个组织域,同时OAuth授权申请的权限范围包含
https://www.googleapis.com/auth/drive全量Drive权限,再发起转让请求即可。
内容的提问来源于stack exchange,提问作者WillMcavoy
相关产品推荐
相关产品推荐

