Google Admin SDK - 服务帐户无法访问资源

时间:2017-02-13 12:20:15

标签: rest google-admin-sdk google-oauth2 service-accounts

我已通过console.developers.google.com创建了服务帐户客户端。生成密钥,.p12证书,启用DwD等等...... 然后我继续作为管理员API references中的描述者。 (HTTP / REST版本)。这包括在Google管理员处为这些客户ID添加范围 - >安全 - >提前设置。 Current admin security config state 在我成功交换访问令牌的代码并请求我的域下的用户列表之后,我得到了这个响应。

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

请求是GET,授权持有人ya29.ElrxA8F [其他的acctoken] 并且google开发人员控制台信息中心会在Admin SDK中显示包含错误请求的图表

2 个答案:

答案 0 :(得分:2)

您必须以指定用户身份证明您的客户

所以我错过了:json auth payload中的“sub”参数: 这是正确的json对象(包含你的id的cource等),你需要用它来从服务帐户访问你的Admin SDK:

  

{
  “ISS”: “761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com”   “子”: “some.user@example.com”,
  “范围”: “googleapis.com/auth/prediction”,
  “AUD”: “googleapis.com/oauth2/v4/token”,
  “exp”:1328554385,“iat”:1328550785   }

查看google admin sdk reference了解更多详情。 (部分带有“sub”参数)

答案 1 :(得分:0)

您可以参考此answer,其中指出只有super admins, delegated admins and resellers才能访问Admin SDK Directory API。尝试委派一个只能通过API访问更新用户的管理员,然后让您的Web应用程序使用为该委派管理员创建的OAuth令牌。这也可能是因为Google App上的配置错误"在Google Apps控制台上添加了带范围的客户端ID。" 。您可以查看this