【问题标题】:Received error “Not Authorized to access this resource/api” when trying to use Google Directory API and OAuth2.0尝试使用 Google Directory API 和 OAuth2.0 时收到错误“未授权访问此资源/api”
【发布时间】:2021-03-29 11:47:42
【问题描述】:

我正在编写一个 python 脚本,该脚本在我的域中创建一个新的 google 用户并将其添加到现有组中。为了确保一切设置正确,我想首先列出该组的当前成员。请注意,我已在控制台中启用了 Admin-SDK API 并创建了 OAuth 2.0 凭据。我的代码如下:

  1. 授权
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user',
          'https://www.googleapis.com/auth/admin.directory.group',
          'https://www.googleapis.com/auth/admin.directory.group.member']
creds = None
credsFile = os.path.abspath("pyScripts/googleCreds/credentials.json")
tokenFile = os.path.abspath("pyScripts/googleCreds/token.pickle")
if os.path.exists(tokenFile):
    with open(tokenFile, 'rb') as token:
        creds = pickle.load(token)

if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            credsFile, SCOPES)
        creds = flow.run_local_server(port=0)

    with open(tokenFile, 'wb') as token:
        pickle.dump(creds, token)

service = build('admin', 'directory_v1', credentials=creds)
  1. 创建用户
service.users().insert(body=request).execute()

这里的请求是参数的字典,如姓名和电子邮件,根据需要

  1. 列出组中的当前成员
service.members().list(groupKey='group@domain.com').execute()

用户已成功创建,但我在尝试列出组成员时收到 403:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://admin.googleapis.com/admin/directory/v1/groups/group%40domain.com/members?alt=json returned "Not Authorized to access this resource/api">

什么可能导致此问题?我特别困惑,因为用户端点工作正常,但成员却不工作。我还应该提到,我在使用 API Explorer 时看到了相同的行为。任何帮助表示赞赏,谢谢!

【问题讨论】:

    标签: python oauth-2.0 google-apps google-admin-sdk google-api-python-client


    【解决方案1】:

    我能够重现与您相同的错误代码和消息。 如果您在群组的电子邮件地址中输入了错误的域名,则会出现带有“未授权访问此资源/api”消息的错误 403。

    https://developers.google.com/admin-sdk/directory/reference/rest/v1/members/list?hl=en

    【讨论】:

    • 嗯,奇怪,我直接从控制台的“我的群组”选项卡复制/粘贴群组电子邮件,但仍然看到 403。
    • 您能否确认您是否使用超级管理员帐户添加用户并查看群组成员列表?请验证您的帐户是否具有管理员组权限/角色
    • 您也可以联系workspace support,它可以帮助您解决遇到的 API 问题。
    猜你喜欢
    • 2013-09-13
    • 2019-05-19
    • 2020-06-01
    • 2018-05-16
    • 2016-12-24
    • 2017-10-08
    • 2017-03-16
    • 2018-08-01
    • 2019-04-16
    相关资源
    最近更新 更多