[英]Google Drive API download NODE.JS sample doesn't work
这是我基于Google的代码:“以下是使用我们的Drive API客户端库执行文件下载的示例。” NODE.JS
const fs = require('fs')
const google = require('googleapis')
const googleAuth = require('google-auth-library')
const SCOPES = ['https://www.googleapis.com/auth/drive'] // Full, permissive scope to access all of a user's files, excluding the Application Data folder. Request this scope only when it is strictly necessary.
const TOKEN_DIR = './credentials/'
const TOKEN_PATH = TOKEN_DIR + 'token4joeDlEs6.json'
const CLIENT_SECRET_FILEPATH = 'client_secret.json'
var clientSecretStr = fs.readFileSync(CLIENT_SECRET_FILEPATH).toString('utf-8')
var tokenStr = fs.readFileSync(TOKEN_PATH).toString('utf-8')
var credentials = JSON.parse(clientSecretStr)
var clientSecret = credentials.installed.client_secret
var clientId = credentials.installed.client_id
var redirectUrl = credentials.installed.redirect_uris[0]
var auth = new googleAuth()
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl)
oauth2Client.credentials = JSON.parse(tokenStr)
var drive = google.drive('v3');
// ["Examples"-NODE.JS tab](https://developers.google.com/drive/v3/web/manage-downloads)
var fileId = 'OBFUSCATED' // Safeway (OBFUSCATED)
var dest = fs.createWriteStream('out/safeway.txt')
drive.files.get({
auth: oauth2Client,
fileId: fileId,
//alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
$ node joeDlSample.js
Done
$
out / safeway.txt包含我的购物清单。 :)
out / safeway.txt包含
{
"access_token" : "OBFUSCATED.OBFUSCATED",
"expires_in" : 3600,
"token_type" : "Bearer"
}
我还上传了.jpg图片,但未注释alt: media
代码中的alt: media
行
out / elb.jpg包含elb图片
out / elb.jpg包含
{
"access_token" : "OBFUSCATED.OBFUSCATED",
"expires_in" : 3600,
"token_type" : "Bearer"
}
通过结合使用Drive NodeJS快速入门和NodeJS的下载文件示例,我设法使Drive API的下载文件正常工作。
在NodeJS快速入门中,有以下代码行:
authorize(JSON.parse(content), listFiles);
我创建了自己的downloadFile
函数来下载文件而不是列出文件,并将上述行修改为
authorize(JSON.parse(content), downloadFile);
这是NodeJS示例的downloadFile
函数部分:
function downloadFile(auth){
var service = google.drive('v3');
var fileId = 'FILE_ID_OF_SHOPPINGLIST_TEXT_FILE';
var dest = fs.createWriteStream('/usr/local/google/home/username/Downloads/shoppinglist.txt');
service.files.get({
auth: auth,
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
}
我的下载文件夹中的下载文件:
为我工作:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.