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

允许访问Python中的Google Admin SDK目录API

郎和志
2023-03-14

null

# google_admin_apis.py
def add_member(member):
    if not member.email:
        return False
    try:
        service = build('admin', 'directory_v1')
    except DefaultCredentialsError: # For developers
        return False
    group_key = 'mygroup@mydomain.com'
    body = {
        "email": member.email
    }
    members = service.members()
    request = members.insert(groupKey=group_key, body=body)
    response = request.execute()
    return True

我的应用程序托管在Google App Engine上,因此默认情况下ADC在服务器上运行时将使用默认服务帐户。我已经尝试通过使用gcloud auth application-default-account登录和使用我的G Suite管理帐户以及我的个人帐户(两者都是GCP项目的所有者)登录来在本地运行这段代码。失败后,我做了一些研究,并意识到要使OAuth2能够访问我的G套件用户数据(我实际上并不是通过插入一个User??来访问任何东西)我必须在默认的服务帐户上“启用域范围的委托”,所以我这样做了,然后我下载了服务帐户JSON并尝试用Google_Application_Credentials手动授权,但仍然得到了403。然后,我更进一步,按照这些指示去做。允许我的客户ID访问https://www.googleapis.com/auth/admin.directory.group和group.member。

在所有这些之后,我仍然得到一个403的错误。

使用application-default-credentials,我得到:

<HttpError 403 when requesting
https://www.googleapis.com/admin/directory/v1/groups/groupKey/members?alt=json 
returned "Insufficient Permission">

null

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

(组密钥被有意审查)

简而言之,我有一个具有域范围委托的app-engine默认服务帐户,并赋予了它的客户机ID访问目录API的member.insert()函数所需的两个角色的权限,但仍然不允许我像上面那样调用API。

如有任何帮助,我们将不胜感激。

共有1个答案

宰父远
2023-03-14

我按照本教程https://developers.google.com/admin-sdk/directory/v1/quickstart/python在本地运行一个类似的函数,使用google_auth_oauthlib设置OAuth2凭据

service = build('admin', 'directory_v1', credentials=creds)
 类似资料:
  • 我有一个子目录()我想访问的是在我的站点的根文件夹。我看了这里: https://wordpress.stackexchange.com/questions/20152/cannot-access-non-wordpress-subdirectories-as-wordpress-overrides-them-with-a-40 我已经尝试了解决方案,但没有任何效果。 我还尝试将一个单独的文件添加

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我有。将文件放入文件夹中的我的文件目录中,即files\myDirectory\myFile.bin 我必须将此文件的路径传递给我的本机库,以便库可以在需要时访问该文件。 如果 c 类结构概述如下,则路径将作为一部分发送: 我第一次尝试通过这条路是这样的: 然后将其传递到结构中,如下所示: 这似乎不起作用? 在C代码中,路径最初在下面的方法中使用: 如果有人能帮助我理解如何将这个文件路径传递给这个

  • 我正在使用Microsoft扩展访问Azure DevOps中的密钥库,从密钥库中获取秘密。我得到了这个错误消息,它似乎说我需要允许Azure Devops代理访问KeyVault的权限。“无法获取托管服务主体的访问令牌。请为虚拟机”https://aka.ms/azure-MSI-docs“配置托管服务标识(MSI)。状态代码:400,状态消息:错误请求” 我在一个单独的测试订阅中运行这个功能,

  • 此url位于AWS API网关中,方法为get,stage部署良好。我在aws文档之后启用了CORS。 -资源->操作->启用CORS->默认设置->启用CORS并替换CORS头。在CORS结果中没有错误日志。 我不是profesional web开发人员,我的浏览器是Safari。 以下是我查询“http://my.com”的代码 控制台打印错误:XMLHttpRequest不能加载“http:

  • 我已创建IAM策略并分配给IAM用户。 请查找保险单 我未选中s3 bucket testingbucket00的“阻止新公共bucket策略”。 我尝试登录aws控制台使用IAM用户列出所有桶,但显示"访问为错误"。 我想给IAM用户分配一个桶,请帮忙。