gpt4 book ai didi

python - 尝试使用 Google Directory API 和服务帐户身份验证时收到错误 "Not Authorized to access this resource/api"

转载 作者:太空狗 更新时间:2023-10-29 22:05:44 25 4
gpt4 key购买 nike

我真的很难尝试使用服务帐户身份验证来使用 Google Directory API (Admin SDK)。

使用基于客户端的三足 OAuth 这可行(在此处测试 - https://developers.google.com/admin-sdk/directory/v1/reference/members/insert )但是我正在使用的服务帐户的权限委托(delegate)存在问题。在 Google Apps 管理下,我启用了 API 并按照说明将服务帐户添加到允许的 OAuth 客户端列表中。

代码如下:

import httplib2
import sys

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

credentials = SignedJwtAssertionCredentials(
'<KEY>@developer.gserviceaccount.com',
'<KEY DATA>',
scope='https://www.googleapis.com/auth/apps.groups.settings https://www.googleapis.com/auth/admin.directory.group https://www.googleapis.com/auth/admin.directory.group.member'
)
http = httplib2.Http()
http = credentials.authorize(http)

service = build("admin", "directory_v1", http=http)
groups = service.groups()
g = groups.get(groupKey="<GROUP NAME>").execute()

最终,我得到以下错误:

apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/admin/directory/v1/groups/<GROUP NAME>?alt=json returned "Not Authorized to access this resource/api">

我也尝试使用以下 API:

service = build("groupssettings", "v1", http=http)

但这也会返回错误 - “后端错误”。

最佳答案

即使您使用的是服务帐户,您仍然需要在具有适当管理员权限的实例中代表 Google Apps 用户。尝试做:

credentials = SignedJwtAssertionCredentials(
'<KEY>@developer.gserviceaccount.com',
'<KEY DATA>',
scope='https://www.googleapis.com/auth/apps.groups.settings https://www.googleapis.com/auth/admin.directory.group https://www.googleapis.com/auth/admin.directory.group.member',
sub='super-admin@yourdomain.com'
)

其中 super-admin@yourdomain.com 是您 Google Apps 帐户中的 super 管理员。

关于python - 尝试使用 Google Directory API 和服务帐户身份验证时收到错误 "Not Authorized to access this resource/api",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com