使用Google云端硬盘的API如何将我的共享Google云端硬盘文件同步到另一台服务器?

时间:2015-12-03 04:10:03

标签: google-drive-api google-oauth

我想访问自己的google驱动器,并将其文件同步到我的服务器。例如,我们的办公室可以轻松地编辑和在Drive上添加文件,如果我可以在服务器上获取它们,我想在我们的网页上使用它们。我知道我可以使用文件ID访问单个文件,但我需要查看父文件夹#34; (驱动器中的文件)全部内容,然后从那里开始。

似乎需要Oauth或类似内容,但如果它是公共共享文件夹,并且我没有尝试访问用户驱动器,(对,我正在访问我自己的)无法弄清楚该怎么做。任何帮助都将非常感激!

2 个答案:

答案 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来获取其所有子项的内容