hil*_*rat 3 google-directory-api google-cloud-platform google-workspace
我们使用 Python 从特定 G Suite 托管域中获取所有用户,但在完成以下教程并授予服务帐户所需的所有访问权限后,以下代码段仍会生成“未授权访问此资源/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)
service = build('admin', 'directory_v1', credentials=credentials)
Run Code Online (Sandbox Code Playgroud)
谷歌文档中有一个(非常模糊的)解决方案的线索:
注意:只有有权访问 Admin API 的用户才能访问 Admin SDK Directory API,因此您的服务帐户需要模拟这些用户之一来访问 Admin SDK Directory API。此外,用户必须至少登录一次并接受 G Suite 服务条款。
在 Python 中实现模拟的方法是在使用 OAuth2 库进行身份验证时发送“主题”。主题应该是有权访问 Admin 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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |