Google Drive API:无法复制共享文件

时间:2014-02-02 23:27:53

标签: google-drive-api

我有一个应用程序,使用Drive Api将文件从一个帐户复制到另一个帐户。

首先将源帐户的文档共享到目标,然后在目标上创建共享文件的本地副本。

到目前为止,我一直在为一些帐户工作。我有一个帐户,该应用程序无法复制该文件。我收到了一个身份验证错误,如下所示:

{ errors: 
   [ { domain: 'global',
       reason: 'userAccess',
       message: 'The authenticated user does not have the required access to the file PKb_fEw17FE',
       locationType: 'header',
       location: 'Authorization' } ],
  code: 403,
  message: 'The authenticated user does not have the required access to the file PKb_fEw17FE' }

一些重要的事情:

  • 错误中的文件描述符不是应用程序尝试的file_id 复印。实际上,每次尝试复制文件时它都会更改。
  • 当我尝试使用Api手动执行此操作时出现相同的错误 驱动程序开发者的探险家 站点(https://developers.google.com/drive/v2/reference/files/copy
  • 我通过GUI验证并使用API​​资源管理器 正在制作副本的用户具有适当的权限。
  • 当我使用Web Gui进行复制时,它没有问题。

这可能与配额有关吗?

一条附加信息:   副本的请求主体仅包括新文件的标题。请参阅下面的代码(nodejs)

var body = {'title': file.title };
var request = client.drive.files.copy({'fileId': file.id}, body);
        request.withAuthClient(auth2).execute(function (err, resp)

1 个答案:

答案 0 :(得分:2)

发现问题。似乎在复制文件时没有声明父级它有时会将其复制到Root目录,有时会尝试将其复制到另一个地方(我假设与原始父级相同)。

我指定应将所有文件复制到root forlder,为父级添加ID,问题就解决了。

var body = {'title': file.title,
            'parents': [ {'id': wr_new_parentroot} ]
            };
console.log('Request Body: %j', body);
var request = client.drive.files.copy({'fileId': file.id}, body);
request.withAuthClient(auth2).execute(function (err, resp) {