我一直在努力让我的大脑阅读google-apis的nodejs文档。 我收集了一长串的例子,但是其中任何一个都能帮我做我想做的事。我只想使用节点js从我的驱动器下载文件。
我已设置OAUTH并使用此代码获取访问令牌(来源:http://masashi-k.blogspot.com.es/2013/07/accessing-to-my-google-drive-from-nodejs.html)
var googleDrive = require('google-drive');
var GoogleTokenProvider = require("refresh-token").GoogleTokenProvider,
async = require('async'),
request = require('request'),
_accessToken;
var tokenProvider = new GoogleTokenProvider({
'refresh_token': REFRESH_TOKEN,
'client_id' : CLIENT_ID,
'client_secret': CLIENT_SECRET
});
tokenProvider.getToken(function(err, access_token) {
console.log("Access Token=", access_token);
_accessToken = access_token;
});
但我不知道如何从这里继续。我尝试过这样的事情没有运气:
function listFiles(token, callback) {
googleDrive(token).files().get(callback)
}
function callback(err, response, body) {
if (err) return console.log('err', err)
console.log('response', response)
console.log('body', JSON.parse(body))
}
listFiles(_accessToken,callback);
我觉得我非常接近,但我需要一些帮助。
提前致谢。
答案 0 :(得分:2)
有两种方法可以执行此操作,具体取决于您要下载的内容。下载原生Google Doc文件和普通文件之间存在很大差异:
files.export
API方法下载文档,提供适当的mime类型以将文档转换为files.get
方法下载普通文件,如果要下载文件数据而不是元数据,则提供正确的标记我建议使用GoogleApis NodeJS库(https://github.com/google/google-api-nodejs-client)
初始化云端硬盘API:
var Google = require('googleapis');
var OAuth2 = Google.auth.OAuth2;
var oauth2Client = new OAuth2('clientId','clientSecret','redirectUrl');
oauth2Client.setCredentials({
access_token: 'accessTokenHere'
refresh_token: 'refreshTokenHere'
});
var drive = Google.drive({
version: 'v3',
auth: this.oauth2Client
});
导入文件:
drive.files.get({
fileId: fileId,
alt: 'media' // THIS IS IMPORTANT PART! WITHOUT THIS YOU WOULD GET ONLY METADATA
}, function(err, result) {
console.log(result); // Binary file content here
});
导出原生Google文档(您必须提供转换的mime类型):
drive.files.export({
fileId: fileId,
mimeType: 'application/pdf' // Provide mimetype of your liking from list of supported ones
}, function(err, result) {
console.log(result); // Binary file content here
});
也许这会在很长一段时间后帮助别人;)
答案 1 :(得分:0)
在https://github.com/google/google-api-nodejs-client
查看官方支持的适用于Google API的NodeJS客户端库从云端硬盘获取文件所需的代码与用于将文件插入Google云端硬盘的自述文件底部的代码类似。您还可以使用API资源管理器测试API参数:https://developers.google.com/apis-explorer/#p/drive/v2/drive.files.get
以下是从Google云端硬盘获取文件的示例调用:
client
.drive.files.get({ fileId: 'xxxx' })
.execute(function(err, file) {
// do something with file here
});