service-accounts - 如何使用服务帐户访问群组成员?

标签 service-accounts google-groups google-admin-sdk

我正在尝试使用服务帐户访问群组成员。我已经验证我可以代表用户使用普通的 OAuth2 token 执行此操作,并调用 https://www.googleapis.com/admin/directory/v1/groups/{group}/members 和范围 https://www.googleapis.com/auth/admin.directory.group.readonly

我想对服务帐户执行相同操作,我已将服务帐户电子邮件地址添加为群组成员,并确认查看成员权限设置为“所有成员”组,所有组织成员”。

当我请求成员列表时,我收到此错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Not Authorized to access this resource/api"
   }
  ],
  "code": 403,
  "message": "Not Authorized to access this resource/api"
 }
}

我需要做什么才能授权此服务帐户查看群组?

最佳答案

假设您有以下内容

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

SCOPES = ["https://www.googleapis.com/auth/admin.directory.user", 
          "https://www.googleapis.com/auth/admin.directory.group"]

credentials = service_account.Credentials.from_service_account_file(
                PATH-TO-YOUR-SERVICE-ACCOUNT-FILE, 
                scopes=SCOPES, subject=ADMIN-EMAIL-ID)
service = build('admin', 'directory_v1', credentials=credentials)
group = "YOUR-GROUP-EMAIL-ID"
direct_members = service.members().list(groupKey=group).execute()["members"]
print(direct_members)

# Note that the above code would give only direct members.
# To get the direct members, set the `inclueDerivedMembership` 
# argument to True as below.
all_members = service.members().list(
              groupKey=group, inclueDerivedMembership=True).execute()["members"]
print(all_members)

这个答案的真实来源是here .

关于service-accounts - 如何使用服务帐户访问群组成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30763840/

相关文章:

python - 使用 Gmail API 获取 Google 群组电子邮件

google-admin-sdk - 如何找到我的Google Apps帐户的不可变ID?

python-2.7 - 将 Oauth2 用于服务帐户(教育版)的 Google Python Admin SDK -"oauth2client.client.AccessTokenRefreshError: access_denied"异常

google-cloud-platform - 使用服务帐户的 Google CloudLogging - PERMISSION_DENIED 错误

python - 有没有办法使用加载的服务帐户来访问 Cloud Run 中的 Google 表格?

google-cloud-platform - 服务帐户是否必须模拟用户才能访问 Directory Api?

node.js - 错误 : Service accounts cannot invite attendees without Domain-Wide Delegation of Authority

ios - 在 UIWebView 中隐藏带有 google groups 的标题

java - 如何将Base64编码的pkcs12内容转换为java.security.PrivateKey?

google-apps-script - 是否可以通过 API 在 Google 网上论坛中插入消息?