目前,我能够使用部署在服务账户中的云功能中的以下代码访问用户,该账户具有域范围的授权。但我使用service_account.Credentials.from_service_account_file从凭证文件中获取,但我不想硬编码凭证,这不是正确的方法。请告诉我是否有一种方法可以不通过凭证来使用。
如果我不在构建中使用凭证,那么我就会得到403。
import googleapiclient.discovery
from google.oauth2 import service_account
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user']
SERVICE_ACCOUNT_FILE = 'service-account-bc07yg1386.json'
credentials_org = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES, subject="[email protected]")
service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials_org)
results = service.users().get(userKey=user_email).execute()
当使用服务账户时,你 需要 以使用凭证来验证请求。
此外,您可以实例化一个 管理SDK目录服务对象 通过使用以下代码,从 执行G Suite全域授权文档。:
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
SERVICE_ACCOUNT_EMAIL = '<some-id>@developer.gserviceaccount.com'
SERVICE_ACCOUNT_PKCS12_FILE_PATH = '/path/to/<public_key_fingerprint>-privatekey.p12'
def create_directory_service(user_email):
credentials = ServiceAccountCredentials.from_p12_keyfile(
SERVICE_ACCOUNT_EMAIL,
SERVICE_ACCOUNT_PKCS12_FILE_PATH,
'notasecret',
scopes=['https://www.googleapis.com/auth/admin.directory.user'])
credentials = credentials.create_delegated(user_email)
return build('admin', 'directory_v1', credentials=credentials)
Python版本使用了一个 P12格式的密钥文件 当进入相应的 谷歌云项目,选择 管理SDK 然后 全权证书: