在Google云端硬盘导出中找不到文件

时间:2019-02-19 10:02:28

标签: javascript google-drive-api

使用Google Drive v3 API时出现404文件找不到错误。我从Google Picker获取的文件ID,所以我知道ID是正确的。令人反感的代码如下(javascript):

downloadFile: function () {
      var _this = this;
      gapi.client.init({
        apiKey: this.developerKey,
        clientId: this.clientId,
        discoveryDocs: ['https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'],
        scope: 'https://www.googleapis.com/auth/drive'
      }).then(function () {
        // not working with private files
        gapi.client.setToken(_this.oauthToken);
        gapi.client.drive.files.export({
          'fileId': _this.selectedFileId,
          'mimeType': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        }).then(function (response) {
            console.log('success!');
          });
        }, function (error) {
          console.log(error);
        });
      }, function (error) {
        console.log(error);
      });
    }

有趣的是,并非所有文件都只有私有文件。因此,我认为“找不到文件”错误只是Google的一般性回复,表明我不允许访问该文件。

奇怪的是,做一个files.get可以正常工作:

 gapi.client.drive.files.get({
         fileId: _this.selectedFileId,
       supportsTeamDrives: true
       }).then(function (response) {
         console.log('worked');
       }, function (error) {
           console.log('failed');
       });

1 个答案:

答案 0 :(得分:1)

使用 https://www.googleapis.com/auth/drive.file 权限时,我看到了相同的错误:要使导出正常工作,您至少需要拥有 https://www.googleapis.com/auth/drive.readonly 授予您正在使用的OAuth令牌的权限。