我有一个基本的JavaScript代码段,可以从google驱动器下载公开共享文件。我创建了一个API密钥,并将我的域配置为允许引用的列表。尝试打开exportLink时出现典型的CORS错误,如https://developers.google.com/drive/web/manage-downloads所述。在浏览器中访问时,下载链接工作正常。
错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.example.com' is therefore not allowed access.
代码:
// setup api key
gapi.client.setApiKey('myKey');
// load libraries and get file from drive API
...
// download file
var xhr = new XMLHttpRequest();
xhr.open('GET', file['exportLinks']['text/csv']);
xhr.onload = function() {
callback(xhr.responseText);
};
xhr.onerror = function() {
callback(null);
};
xhr.send();
答案 0 :(得分:3)
我已经确认这是Drive API中的错误,但它只会影响新Google表格文件的exportLinks。旧Google表格和其他Google文件类型应该可以正常运行。我已经和团队一起提出了这个问题,但目前还不清楚修复需要多长时间。遗憾的是,没有简单的解决方法,唯一的解决方案是引入一个服务器端组件,该组件将下载该文件,然后将其传递给客户端。
答案 1 :(得分:-2)
这不是一个解决方案,但您可以尝试使用the PyDrive library。它由Google云端硬盘团队开发。这个库工作得非常好,我能够下载一个csv文件,只有以下几行:
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
file = drive.CreateFile({'id': 'YOUR ID HERE'})
file.GetContentFile('test.csv', mimetype='text/csv')
确保将client_secrets.json放在同一目录中。