Google admin sdk 使用服务帐户的gcp admin sdk发现内置云功能

Google admin sdk 使用服务帐户的gcp admin sdk发现内置云功能,google-admin-sdk,google-directory-api,Google Admin Sdk,Google Directory Api,到目前为止,我能够使用部署在服务帐户中的云功能中的以下代码访问用户,该帐户具有域范围的授权。但我使用的是凭证文件中的service_account.Credentials.from_service_account_文件,但我不想硬编码凭证,这不是正确的方法。请让我知道,如果有一种方式使用而不通过凭证 如果我在构建中不使用凭据,那么我将得到403 import googleapiclient.discovery from google.oauth2 import service_account

到目前为止,我能够使用部署在服务帐户中的云功能中的以下代码访问用户,该帐户具有域范围的授权。但我使用的是凭证文件中的service_account.Credentials.from_service_account_文件,但我不想硬编码凭证,这不是正确的方法。请让我知道,如果有一种方式使用而不通过凭证

如果我在构建中不使用凭据,那么我将得到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="admin@domain.com")

service = googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials_org)

results = service.users().get(userKey=user_email).execute()

使用服务帐户时,需要使用凭据来验证请求

此外,您可以使用以下代码实例化Admin SDK目录服务对象,代码取自:

来自GoogleAppClient.discovery导入生成的

从oauth2client.service\u帐户导入ServiceAccountCredentials
服务\帐户\电子邮件='@developer.gserviceaccount.com'
服务\帐户\ PKCS12\文件\路径='/PATH/to/-privatekey.p12'
def创建目录服务(用户电子邮件):
凭据=ServiceAccountCredentials.from_p12_密钥文件(
服务、帐户、电子邮件、,
服务\帐户\ PKCS12\文件\路径,
“不是秘密”,
作用域=['https://www.googleapis.com/auth/admin.directory.user'])
凭据=凭据。创建\u委托(用户\u电子邮件)
返回生成('admin','directory_v1',credentials=credentials)
注 Python版本使用P12格式的密钥文件,当转到相应的Google Cloud项目时,选择Admin SDK,然后选择凭据,可以生成该文件:

参考文献

您好,您是否介意更明确地说明在这种情况下您想要实现的目标?你说的“不通过认证”是什么意思@SharathKiraniAs服务帐户拥有所有必要的权限,并且我的云功能部署在服务帐户中。因此,不需要任何服务帐户凭据。由于我必须传递范围并服从凭证对象,因此无法将这些范围传递给GoogleAppClient.discovery.build。如果我没有将作用域和主题(模拟管理员)传递给构建。我去拿403。请让我知道,如果你需要任何进一步的细节。谢谢,您不想在构建服务时包含凭据和作用域吗?SharathKiraniYes,如果可能的话。否则,如何设置build对象的作用域和主题,以便获得200个响应。如果有任何方法可以让用户使用这个api,那么很乐意实现它。你说的“构建对象”是什么意思?此外,您现在执行请求时是否获得了200代码?