就创建文件夹并将其上传到文件的功能而言,我需要以编程方式修改Google云端硬盘,然后在需要时删除该根文件夹并重做整个过程。
我创建了一个具有服务帐户的项目,然后下载了JSON,并将其存储在我的计算机上。
接下来,我跟随this tutorial。
我最终得到了这段代码:
class Results
{
sum = (numbers) => {
let result=numbers.reduce((a,b)=>a+b);
return result;
}
state = (numbers) => {
console.log(this);
let result= this.sum(numbers)>0 ? "positive" : "negative";
return result;
}
}
function play(){
let results=new Results();
let numbers=[1,2,3,4];
console.log(results.sum(numbers));
console.log(results.state(numbers));
let arrayfunctions=[];
arrayfunctions.push(results.sum);
arrayfunctions.push(results.state);
arrayfunctions.forEach(funcion=>
{
console.log(funcion(numbers))
});
}
play();
但是,执行它会引发以下错误:
const auth = await google.auth.getClient({
credentials: require(pathToServiceAccountJSON),
scopes: "https://www.googleapis.com/auth/drive"
});
const drive = await google.drive({ version: "v3", auth });
drive.files
.create({
resource: {
name: filename,
mimeType: "application/vnd.google-apps.folder",
parents: [parentId]
}
})
.then(result => console.log("SUCCESS:", result))
.catch(console.error);
答案 0 :(得分:0)
首先,如果您迷路了,此quick start from Google可能比本教程要好。
第二,要访问驱动器,必须在应用程序内请求适当的范围,并且必须通过访问将在授权过程中提供的URL来授权应用程序的请求权限(范围)。 Here is a guide to scopes。
答案 1 :(得分:0)
要使用服务帐户模拟用户(例如您本人或域中的其他任何人),您需要在域范围内启用该服务,为此,您需要拥有G Suite帐户[1] 。在这种情况下,从库示例[2]中,您需要在构造JWT对象时添加要模拟的用户作为第五个参数:
const {JWT} = require('google-auth-library');
const keys = require('./jwt.keys.json');
async function main() {
const client = new JWT(
keys.client_email,
null,
keys.private_key,
['https://www.googleapis.com/auth/cloud-platform'],
'userToImpersonate@example.com'
);
const url = `https://dns.googleapis.com/dns/v1/projects/${keys.project_id}`;
const res = await client.request({url});
console.log(res.data);
}
如果您没有G Suite帐户,则只需按照快速入门[3]步骤获得驱动器服务,然后使用它进行创建请求。
[1] Do I need G Suite account to make requests impersonating an user with a service account?
[2] https://github.com/googleapis/google-auth-library-nodejs#json-web-tokens
[3] https://developers.google.com/drive/api/v3/quickstart/nodejs