如何在Google API NodeJS客户端

时间:2018-05-14 17:27:27

标签: google-api-nodejs-client

根据defaultauth示例中的recommendation,我正在尝试访问我为其创建服务帐户的域的目录api。这是我试图连接的代码:

import { google } from 'googleapis'

const authClient = await google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/admin.directory.user.readonly']
})

const service = google.admin('directory_v1')

console.log(
    await service.users.list({
        auth: authClient,
        domain: <redacted>
    })
)

然而,当我尝试连接时,我收到一条错误Error: Not Authorized to access this resource/api。如果我删除creds.json中的~/.google文件,则错误会更改为无法找到凭据文件。此外,我能够使用相同的文件访问一个桶,所以我很确定我的本地环境设置正确,身份验证明智。过去几天我和支持团队G Suite API团队的某个人一起工作,他向我保证我的域名设置正确。

在网上浏览后,似乎我错过的是在尝试连接我的服务帐户时冒充管理员帐户。我在网上找到了一些使用JWT auth策略执行此操作的示例,但我想继续使用默认的auth客户端,以抽象出实现细节。这可能吗?如果是这样,我需要改变什么?我尝试在两个调用(subjectdelegationEmail)中设置getClientlist

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

只需设置客户端对象的主题

authClient.subject = 'your email address'

Google的api文档因语言而异。没有标准。在nodejs客户端中,PHP客户端中记录的某些内容可能会丢失,并且可能需要花费数小时才能找到解决方法。