1

我已经通过使用带有 java 的 Google drive API 从 google drive 下载文档。但我想使用 javascript 而不是 java。所以我正在使用 Drive API 客户端库 java 脚本代码。我正在使用下面的代码来实现这一点

function downloadFile(file, callback) {
  if (file.downloadUrl) {
    var accessToken = gapi.auth.getToken().access_token;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', file.downloadUrl);
    xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    xhr.onload = function() {
      callback(xhr.responseText);
    };
    xhr.onerror = function() {
      callback(null);
    };
    xhr.send();
  } else {
    callback(null);
  }
}

我的问题是我可以显示所有文件名和内容。但我无法下载文件。我需要做任何额外的代码吗?如何将文件保存在本地系统中。有什么建议么 ?注意:如果我将 downloadUrl 粘贴到浏览器中,我可以获得价值,file.downloadUrl它不会给出任何结果,只是显示一个空白页面。

4

1 回答 1

0

“如果我将 downloadUrl 粘贴到浏览器中,它不会给出任何结果”是正确的,因为当您使用浏览器 GET 时,没有身份验证标头。如果您检查状态,您将看到 401 错误。

我使用“授权:' OAuth '+ gapi.auth.getToken()['access_token']”而不是“ Bearer ”。我不确定这是否重要。

您确定 downloadUrl 是最新的吗?这是一个短暂的属性,因此链接可能已过期。

访问令牌也可能无效。正如 Burcu 所说,您的答案可能在您的 xhr 获取的响应和状态中。

于 2013-07-25T07:21:41.660 回答