使用服务帐户身份验证/关键字失败的 AdminSettings API

2024-03-31

尝试通过服务帐户使用 AdminSettings API 检索域用户数“GetCurrentNumberOfUsers()”Python。启用了广泛的授权和范围,但出现错误。我已将服务帐户用于日历 API、目录 API、电子邮件设置 API,但不适用于管理设置。尝试了示例代码:github.com/Khan/gdata-python-client/blob/master/samples/apps/adminsettings_example.py但在使用正确的管理员帐户凭据时出现“需要授权”错误:API客户端访问 https://i.stack.imgur.com/a7pxZ.jpg

from oauth2client.client import SignedJwtAssertionCredentials
import gdata.gauth
import gdata.apps.service
import gdata.apps.adminsettings.service

SERVICE_ACCOUNT_EMAIL = "XXXXXXXXXXXXX-ebirq08jvhldahbb482u8a1otu9n3l8p.apps.googleusercontent.com"
SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'gapi_admin/privatekey.p12'
f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope='https://apps-apis.google.com/a/feeds/domain/', sub='[email protected] /cdn-cgi/l/email-protection')
auth2token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
service = gdata.apps.adminsettings.service.AdminSettingsService(source="testApp", domain='xxxtestmail.edu')
service = auth2token.authorize(service)

print service.GetCurrentNumberOfUsers()

#output
#TypeError: new_request() takes exactly 1 non-keyword argument (2 given)

在 OAuth2 Playground 中工作正常,查看截屏 https://i.stack.imgur.com/IncXF.jpg.


旧的 GData Python 库服务对象实际上并不支持您需要使用的 OAuth 2.0。但是您可以在那里破解访问令牌。尝试类似的方法:

credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope='https://apps-apis.google.com/a/feeds/domain/', sub='[email protected] /cdn-cgi/l/email-protection')
credentials.refresh(httplib2.Http())
service = gdata.apps.adminsettings.service.AdminSettingsService(source="testApp", domain='xxxtestmail.edu')
service.additional_headers[u'Authorization'] = u'Bearer {0}'.format(credentials.access_token)

print service.GetCurrentNumberOfUsers()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用服务帐户身份验证/关键字失败的 AdminSettings API 的相关文章

随机推荐