当前位置: 首页 > 知识库问答 >
问题:

尝试使用Python访问目录api时,服务帐户未被授权访问此资源/api

华泳
2023-03-14

null

import json
from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly']

credentials = service_account.Credentials.from_service_account_file("/path/to/file.json", scopes=SCOPES)

service = build('admin', 'directory_v1', credentials=credentials)

共有1个答案

彭修筠
2023-03-14

在Google文档中有一条(非常模糊的)解决方案的线索:

注意:只有具有Admin API访问权限的用户才能访问Admin SDK目录API,因此您的服务帐户需要模拟这些用户中的一个来访问Admin SDK目录API。此外,用户必须至少登录一次并接受G Suite服务条款。

在Python中实现模拟的方法是在使用OAuth2库进行身份验证时发送一个“subject”。主体应该是一个可以访问管理API的用户(他不一定是管理员,用户管理角色应该足够了,至少对我来说是这样)。

工作代码段:

import json
from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly']

credentials = service_account.Credentials.from_service_account_file("/path/to/file.json", scopes=SCOPES, subject="admin@yourdomain.com")
 类似资料:
  • 我在使用PHP api实际版本的示例时遇到了一个问题,并且使用了examples文件夹的“service-account.PHP”文件。 null null 以下是错误堆栈: null null

  • 问题内容: 我仅在使用PHP api实际版本的示例并使用examples文件夹的“ service-account.php”文件时遇到问题。 原来是用于显示“ Books API”的,并且通过我的个人凭据配置可以很好地工作,但是在我的xcase中,我需要通过directory.groups.get服务进行访问,以获取Google网上论坛邮件列表的会员帐户列表,所以我在其中更改了原始代码: 无论我做

  • 问题内容: 我确实很难尝试使用服务帐户身份验证来使用Google Directory API(Admin SDK)。 使用基于客户端的三足式OAuth可以正常工作(在此处进行测试-https: //developers.google.com/admin- sdk/directory/v1/reference/members/insert ),但是将权限委派给我所使用的服务帐户存在问题使用。在Goo

  • null 这导致最后一行(codeDirmem.list/code...)出现异常403(未授权访问此资源/API)。 从文档(https://developers.google.com/admin-sdk/directory/v1/guides/delegation)和其他文章中,我看到解决方案是用 设置一个服务帐户用户。但是,这意味着我必须使用p12文件而不是json文件(Google建议您在

  • 我们正在尝试创建一个与谷歌管理SDK的集成,以便能够检索,更新和创建帐户在我们的领域。但是,我们不断收到一个403错误,表明我们没有被授权访问Resource/API。 我们正在使用从一个服务帐户获得的凭据,该帐户启用了域范围的授权,并且具有以下两个作用域:https://www.googleapis.com/auth/admin.directory.user.readonly,https://w

  • 问题内容: 我们在使用服务帐户访问代理商API时遇到问题。具有客户机密的示例运行良好,但是我们需要将其部署在k8s(Kubernetes Engine)中,而无需定期刷新oauth会话(尤其是执行一次,因为在docker容器中有点难)。 尽管有很多关于如何使用python进行操作的文档,但我们找不到使用服务帐户进行访问的任何方法。 我们尝试了两个帐户,一个为默认计算引擎,一个为我们的用例直接创建。