我在Google Apps市场中创建了一项服务,该服务需要能够下拉Google Apps域中所有用户帐户的列表。看起来,要使用带有Admin SDK的服务帐户,您必须指定一个“子”(您代表您执行操作的用户)。如果管理员帐户地址未知,我如何在Google Admin SDK中使用服务帐户?
因为我的OAuth令牌在整个Google Apps域中都被接受,所以如果您已经知道域管理员的地址以放入“子”字段,那么我的代码工作得很好。但是,这项服务并不知道域管理员的电子邮件地址,我也不想问这个用户,因为它可能会在没有任何警告的情况下更改。
有没有人知道一种方式来查询用户目录,而不必知道一个管理员的电子邮件地址“充当”?
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials
PRIVATE_KEY = "privatekey.p12"
SERVICE_ACCOUNT = "(removed)@developer.gserviceaccount.com"
SCOPE = "https://www.googleapis.com/auth/admin.directory.user.readonly"
# Read in key file
key_file = file(PRIVATE_KEY, 'rb')
key = key_file.read()
key_file.close()
credentials = SignedJwtAssertionCredentials(service_account_name=SERVICE_ACCOUNT,
private_key=key,
scope=SCOPE,
# What if I don't already know the
# e-mail address of an admin?
sub="[email protected]")
# Authorize the httplib2.Http object
http = httplib2.Http()
http = credentials.authorize(http)
service = build('admin', 'directory_v1', http=http)
service.users().list(domain="mattslifebytes.com",
fields="users(primaryEmail,thumbnailPhotoUrl)").execute()
很确定你不能那样做。无论如何,当他访问您的页面时,您会收到管理员电子邮件。 – MeLight