Javascript 将文件上载到Google Drive:权限不足
我正试图将图像文件green.png上传到我的谷歌硬盘,但仍然收到错误消息 “许可不足” 我怀疑这与我的Javascript 将文件上载到Google Drive:权限不足,javascript,google-drive-api,Javascript,Google Drive Api,我正试图将图像文件green.png上传到我的谷歌硬盘,但仍然收到错误消息 “许可不足” 我怀疑这与我的范围有关。我已经多次修改我的作用域,并继续得到错误 有人知道我可以对代码做些什么才能成功地将其上传到我的驱动器上吗?多谢各位 var path = require("path"); const fs = require('fs'); const readline = require('readline'); const {google} = require('googleapis'); con
范围有关。我已经多次修改我的作用域,并继续得到错误
有人知道我可以对代码做些什么才能成功地将其上传到我的驱动器上吗?多谢各位
var path = require("path");
const fs = require('fs');
const readline = require('readline');
const {google} = require('googleapis');
const OAuth2Client = google.auth.OAuth2;
const TOKEN_PATH = 'credentials.json';
var fileArr=[];
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var multer = require("multer");
var upload = multer({dest: "./uploads"});
const SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.metadata',
'https://www.googleapis.com/auth/drive.photos.readonly',
'https://www.googleapis.com/auth/drive.appdata',
];
module.exports=function(app){
app.post("/upload2", upload.array('file', 4) , function(req, res, next){
const TOKEN_PATH = 'credentials.json';
fs.readFile('client_secret.json', (err, content) => {
if (err) return console.log('Error loading client secret file:',
err);
authorize(JSON.parse(content), UploadFiles);
});
function authorize(credentials, callback) {
const {client_secret, client_id, redirect_uris} =
credentials.installed;
const oAuth2Client = new OAuth2Client(client_id, client_secret,
redirect_uris[0]);
fs.readFile(TOKEN_PATH, (err, token) => {
if (err) return getAccessToken(oAuth2Client, callback);
oAuth2Client.setCredentials(JSON.parse(token));
callback(oAuth2Client);
});
}
function UploadFiles(auth) {
console.log(auth)
const drive = google.drive({version: 'v3', auth});
var folderId = '1AM07eNAJz5D4oFa5ZB-0ygOa_tVjoAgR';
var fileMetadata = {
'name': 'green.png'
parents: [folderId]
};
var media = {
mimeType: 'image/png',
body: fs.createReadStream('./img/green.png')
};
drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
}, function (err, file) {
if (err) {
// Handle error
console.log(err);
} else {
console.log('File Id: ', file.id);
}
});
}
})
}
代码:403,错误:[{域:“全局”,原因:“权限不足”,消息:“权限不足”}]}
确切地说,您已通过身份验证的用户没有权限执行您尝试执行的操作
在您的情况下,两件事中的一件可能是您的问题的原因
与您进行身份验证的用户无法访问下面的文件夹。您可能未键入该文件夹。该文件夹可能属于其他用户,而您忘记与此用户共享
var folderId = '1AM07eNAJz5D4oFa5ZB-0ygOa_tVjoAgR';
第二个选择是,你目前正在包括太阳下的所有范围,你真的不需要。但是,如果您第一次对该用户进行身份验证时,仅请求了例如read me,则该用户仅授予读取我的权限。您需要对您的用户进行身份验证,它将提示您输入您在代码中添加的其他作用域的权限,然后它就可以工作了
你真的只需要这个,它能让你接触一切
'https://www.googleapis.com/auth/drive',
代码:403,错误:[{域:“全局”,原因:“权限不足”,消息:“权限不足”}}我可以列出从filder到我的站点的所有文件。当用户访问该站点时,页面上会填充来自我的驱动器文件夹的图像,因此我立即感到满意,因为它工作正常。用户可以上传他们的图像,但在我测试时,我显然在创建文件但不列出文件的权限方面存在问题。最后,我将范围切换为仅建议的范围,并且仍然抛出错误。文件夹ID也匹配。如果您正在访问persona驱动器文件夹上的数据,而不是用户驱动器文件夹上的数据,则应使用非Oauth2的服务帐户。请记住授予服务帐户对相关文件夹的访问权限。它将能够上传文件到文件夹。很抱歉,我无法想象你想说什么。您是否有任何示例代码来解释您所说的内容。