代码之家  ›  专栏  ›  技术社区  ›  Matt Wester

使用服务帐户检索用户信息时Google Directory API:403

  •  8
  • Matt Wester  · 技术社区  · 8 年前

    这可能与 Google Directory API returns 403 for user_list with showDeleted=true 但不幸的是,我还无法发表评论,我也没有答案。

    service account 经允许从学校的G套房

    https://www.googleapis.com/auth/admin.directory.user.readonly
    

    G套件管理员表示,他已将整个域的权限委托给该帐户,我能够创建服务帐户JWT并检索访问令牌,以使用HTTP/REST流调用API。然而,当我打电话给 user get endpoint

    https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full
    

    我收到以下信息:

    The remote server returned an error: (403) Forbidden.
    {
      "error": {
        "errors": [
          {
            "domain": "global",
            "reason": "forbidden",
            "message": "Not Authorized to access this resource/api"
          }
        ],
        "code": 403,
        "message": "Not Authorized to access this resource/api"
      }
    }
    

    我没有访问他们的G套件管理面板的权限,因此我无法随意走动,但管理员已确认我们的客户可以访问管理员。目录使用者如前所述,他可以在任何地方找到只读权限,我们的角色具有域范围访问权限。对于管理员可能缺少指定权限的位置,或者我的方法中可能缺少的任何内容(尽管JWT构建/签名和访问令牌检索),我愿意接受建议 按预期工作)。如果有任何其他有用的信息,我可以提供,请让我知道,我会更新。

    更新:该帐户的权限似乎是正确的-我能够从用户检索信息/在API浏览器中获取。但是,API Explorer正在使用URL

    https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full&key={YOUR_API_KEY}
    

    Google API Client users().get(userKey='name@domain.com') returns Not Authorized to access this resource/api )没有回答。

    2 回复  |  直到 8 年前
        1
  •  4
  •   noogui    8 年前

    尚未使用管理SDK,但我建议检查一下 Perform G Suite Domain-Wide Delegation of Authority 因为它侧重于服务帐户的使用。

    您创建的服务帐户需要被授予访问 G Suite域您要访问的用户数据。以下内容 任务必须由G套件域的管理员执行:

    1. 从选项列表中选择高级设置。
    2. 在“身份验证”部分中选择“管理API客户端访问”。
    3. 在一个或多个API作用域字段中,输入应用程序应被授予访问权限的作用域列表(请参见下图)。对于 示例:如果您需要对用户和组进行全域访问,请输入: https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group
    4. 单击“授权”按钮。

    适用于域中所有用户的SDK目录API。你已经准备好了 代表实例化授权的Admin SDK目录服务对象

        2
  •  0
  •   Dharmesh Fumakiya    8 年前

    您需要从谷歌控制台启用API访问

    Dictionary API

    Enable API