我想访问自己的google驱动器,并将其文件同步到我的服务器。例如,我们的办公室可以轻松地编辑和在Drive上添加文件,如果我可以在服务器上获取它们,我想在我们的网页上使用它们。我知道我可以使用文件ID访问单个文件,但我需要查看父文件夹#34; (驱动器中的文件)全部内容,然后从那里开始。
似乎需要Oauth或类似内容,但如果它是公共共享文件夹,并且我没有尝试访问用户驱动器,(对,我正在访问我自己的)无法弄清楚该怎么做。任何帮助都将非常感激!
答案 0 :(得分:1)
您可以使用Google Drive API
来自Google Drive API Reference Page.的样本
/**
* Print a file's metadata.
*
* @param {String} fileId ID of the file to print metadata for.
*/
function printFile(fileId) {
var request = gapi.client.drive.files.get({
'fileId': fileId
});
request.execute(function(resp) {
console.log('Title: ' + resp.title);
console.log('Description: ' + resp.description);
console.log('MIME type: ' + resp.mimeType);
});
}
/**
* Download a file's content.
*
* @param {File} file Drive File instance.
* @param {Function} callback Function to call when the request is complete.
*/
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);
}
}
或者,您可以使用Google Apps脚本创建返回文件信息的rest api。 Using the Execution API
示例代码:
function GetFiles() {
var result = [];
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileInfo = new Object();
fileInfo.id = file.getId();
fileInfo.name = file.getName();
fileInfo.size = file.getSize();
fileInfo.url = file.getDownloadUrl();
result.push(fileInfo);
}
return result;
}
上面的代码返回一个包含文件ID,名称,大小和下载URL的对象列表。
希望有所帮助。
答案 1 :(得分:1)
"我没有尝试访问用户驱动器,(对,我自己访问)"
但是 1 /谷歌如何知道你呢? 2 / Google如何知道该应用是您已授予权限的应用?
这两个问题的答案都是OAuth,假设您要使用应用程序访问这些文件。
所以你的应用程序的伪代码看起来像。 - 获取访问令牌 - 使用该访问令牌获取父文件夹。保存其ID - 使用父文件夹的ID来获取其所有子项的内容