试图通过GetCurrentNumberOfUsers AdminSettings 中的服务帐户使用AdminSettings API来收回用户的域数‘()’。启用了广泛的授权和范围,但会出现错误。我为Calendar API、Directory、EmailSettings API使用了服务帐户,但没有为AdminSettings工作。尝试在: github.com/Khan/gdata-python-client/blob/master/samples/apps/adminsettings_example.py上使用示例代码,但在对管理帐户使用正确的凭据时获得“授权所需”错误:API客户端访问
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='admin@xxxtestmail.edu')
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游乐场很好,可以查看屏幕截图。
发布于 2016-02-04 21:41:54
旧的GData Python库服务对象实际上不支持OAuth 2.0,这正是您需要使用的。但是,您可以在那里黑入一个访问令牌。试一试如下:
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope='https://apps-apis.google.com/a/feeds/domain/', sub='admin@xxxtestmail.edu')
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()https://stackoverflow.com/questions/34613881
复制相似问题