我想访问谷歌经销商api获得客户和订阅使用谷歌服务帐户密钥,但无法做到这一点。下面是我的代码片段:
async function runSample() {
const auth = new google.auth.GoogleAuth({
keyFile: "../server/credentials/serviceAccountKey.json",
scopes: ["https://www.googleapis.com/auth/apps.order",
"https://www.googleapis.com/auth/apps.order.readonly"
],
});
// Acquire an auth client, and bind it to all future calls
const authClient = await auth.getClient();
google.options({ auth: authClient });
// Do the magic
const res = await reseller.subscriptions.list();
console.log(res.data);
}
runSample().catch(console.error);
这里我想从谷歌经销商控制台获得订阅列表。我从谷歌文档中引用了上面的代码。在这里,我得到错误"经过身份验证的用户未被授权执行此操作"。,而给出的原因是"权限不足"。
errors: [
{
message: 'Authenticated user is not authorized to perform this action.',
domain: 'global',
reason: 'insufficientPermissions'
}
]
如果我尝试访问云通道服务api,我可以使用相同的服务帐户密钥,但它会给经销商api错误。
我已经给服务帐户的所有者,云工作站admin和服务帐户admin角色访问。我还在域范围委托(dwd)中添加了作用域。我还需要什么许可?
为了使用服务帐户,必须首先通过您的google工作空间帐户进行配置创建一个服务帐户
您还必须在代码中指出您的服务帐户已配置为模拟的用户的名称。
const auth = new google.auth.GoogleAuth({
keyFile: "../server/credentials/serviceAccountKey.json",
clientOptions: {
subject: 'user@yourdomain.com'
},
scopes: ["https://www.googleapis.com/auth/apps.order"
],
});