【发布时间】:2020-11-12 18:48:51
【问题描述】:
我在 Google API 的开发者控制台上创建了一个项目并启用了 Google Drive API。
我还创建并下载了我在 Node.js 后端服务器上使用的服务帐户凭据 .json 文件,并且连接和上传谷歌驱动器上的图像文件。
npm i googleapis
const { google } = require('googleapis');
let privatekey = require("./privatekey.json");
// configure a JWT auth client
let jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
['https://www.googleapis.com/auth/drive']);
//authenticate request
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log("Successfully connected to gdrive!");
}
});
//Google Drive API
let drive = google.drive('v3');
drive.files.list({
auth: jwtClient,
q: "name contains 'photo'"
}, function (err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
console.log(response.data);
var files = response.data.files;
if (files.length == 0) {
console.log('No files found.');
} else {
console.log('Files from Google Drive:');
for (var i = 0; i < files.length; i++) {
var file = files[i];
console.log('%s (%s)', file.name, file.id);
}
}
});
let fs = require('fs');
var fileMetadata = {
name: 'photo.png',
};
var media = {
mimeType: 'image/jpeg',
body: fs.createReadStream('files/photo.png'),
};
drive.files.create(
{
auth: jwtClient,
resource: fileMetadata,
media: media,
fields: 'id',
},
function (err, file) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('File Id: ', file.data.id);
}
},
);
当我上传文件时,我会在响应中获得唯一的文件 ID。
在 android 应用程序以及前端反应应用程序上,我想使用 URL 显示这个图像文件。
我尝试了https://drive.google.com/open?id=PASTE 您的 ID HERE 和 http://drive.google.com/uc?export=view&id=PASTE YOUR ID HERE,但它说您需要访问权限。
我在上传图片时也尝试了publishAuto:true,但没有成功。
让上传的图片文件可以通过 URL 访问的正确方法是什么?
【问题讨论】:
标签: javascript node.js reactjs google-api google-drive-api