我试图通过使用一个服务帐户来使用域范围的委托来进行google驱动API调用。我可以让身份验证工作,但不能让驱动器api调用。错误:在驱动器中创建文件时找不到文件
此外,在域范围的委托之前,我通过与服务帐户共享驱动器文件夹来使其工作。但现在我想让它在没有分享的情况下工作。
我想我需要在某个地方做一些setServiceAccount的事情。不知道那会发生在哪里。
const {google} = require('googleapis');
const auth = new google.auth.JWT(
client_email, null,
privateKey, ['https://www.googleapis.com/auth/drive']
);
const drive = google.drive({version: "v3", auth});
//drive.files.create({});
发布于 2020-05-21 02:57:05
答案:
您需要将从GCP控制台获得的服务帐户私钥传递给您的JWT客户端,并指定您希望模拟为subject
__的用户。
代码:
获得私钥后,需要在授权前将其传递给JWT客户端:
let google = require('googleapis');
let privateKey = require("./privatekey.json");
var jwtClient = new google.auth.JWT({
email: privateKey.client_email,
key: privateKey.private_key,
scopes: ['https://www.googleapis.com/auth/drive'],
subject: 'user@domain.com'
});
jwtClient.authorize(function (error, tokens) {
if (error) {
console.log(error);
return;
}
else {
console.log("Successfully connected!");
}
});
然后,您可以按照您的意愿,以驱动器API作为服务帐户。
https://stackoverflow.com/questions/61915432
复制