Google Adminsdk 目录 API 访问权限

Google Adminsdk Directory API access

我正在尝试获取使用指定客户 ID 注册的 chrome 设备的列表。

我已经完成了以下步骤。

  1. 已启用Google管理目录API
  2. 已创建服务帐户并下载了 jwt.json 文件 连通性。
  3. 启用域范围内的 G-Suite 委派特权。
  4. 已将此客户端 ID 注册为授权 API 客户端直通 Google 管理员(管理 API 客户端访问)

    客户编号:我们的客户编号 API 范围:查看和管理您的 Chrome OS 设备的元数据 https://www.googleapis.com/auth/admin.directory.device.chromeos View your Chrome OS devices' metadata https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly 接下来我使用我的节点模块生成 JWT 访问

令牌创建成功。

{"access_token":"ya29.c.KpEB****K*********lufaGlx5k********hvAdADxBhOA****8R3rnTPKKnVb97sdPFG66wHy4FPrnx6KskafKXrBBfEgILdDelP-n5irpKm5h8y8oBWHO*******Xg","token_type":"Bearer","expiry_date":1587150649000,"refresh_token":"jwt-placeholder"}

现在我正在尝试使用此 Bearer toke 访问以下 API

https://www.googleapis.com/admin/directory/v1/customer/ourcustomerid/devices/chromeos

这总是给出以下错误。

{
  "error": {
    "errors": [{
      "domain": "global",
      "reason": "forbidden",
      "message": "Not Authorized to access this resource/api"
    }],

    "code": 403,
    "message": "Not Authorized to access this resource/api"
  }
}

不确定是什么问题。

它在 adding Impersonated users email address 之后工作...最初是

const jwtAuth = new google.auth.JWT(
            quickstart.client_email,
            null,
            quickstart.private_key,
            [
                'https://www.googleapis.com/auth/admin.directory.device.chromeos',
                'https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly'
            ]
);

然后我将主题添加为模拟用户的电子邮件地址。

const jwtAuth = new google.auth.JWT(
            quickstart.client_email,
            null,
            quickstart.private_key,
            [
                'https://www.googleapis.com/auth/admin.directory.device.chromeos',
                'https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly'
            ],
            'email address of the impersonated user',
);