使用google-api-python-client访问G Suite Admin SDK时收到403错误

问题描述 投票:0回答:1

我正在尝试编写一个简单的脚本,该脚本将使用google-api-python-client从Admin SDK的Directory API获取我的Google G Suite域中的用户列表。我已经阅读了大量的文档,尝试了数百种不同的请求,但总是收到:googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/admin/directory/v1/users?domain=example.com&alt=json returned "Not Authorized to access this resource/api">错误。

这就是我做的:

  1. 在Google Developer console https://console.developers.google.com中: 创建了一个新项目 已启用“管理SDK”API。 创建了服务帐户密钥 将生成的密钥保存到'service-key.json'文件中
  2. 在G Suite管理控制台中: API访问已启用 Admin SDK已启用 服务密钥^^的“客户端ID”被授权“查看您域中的用户”,范围:API客户端访问控制台部分中的https://www.googleapis.com/auth/admin.directory.user.readonly
  3. 创建了一个简单的测试脚本: #!/usr/bin/env python3 import json from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build scopes = ['https://www.googleapis.com/auth/admin.directory.user.readonly'] credentials = ServiceAccountCredentials.from_json_keyfile_name( 'service-key.json', scopes) account = credentials.authorize(Http()) service = build('admin', 'directory_v1', http=account) response = service.users().list(domain='example.com').execute() print(response)

其他:

  • 尝试了“启用G Suite全域委派”(在ServiceAccountCredentials对象上使用了create_delegated()方法)
  • 我在Google Developer Console - Dashboard中看到脚本正在发出正确的请求 - 可以看到'directory.users.list'API方法正在发布,但是因403错误而失败

在此先感谢您的帮助!

python python-3.x google-api google-admin-sdk google-api-python-client
1个回答
0
投票

@Rebot先生的建议对我有用。基本服务帐户不起作用,但模仿管理员(您已启用它),允许API调用通过。

© www.soinside.com 2019 - 2024. All rights reserved.