Uso de la API de hoja de cálculo OAuth2 con autenticación de certificado

Estoy tratando de usar Gdata Spreadsheet API con OAuth2.

El uso de OAuth2.0 ClientID funciona con OAuth2WebServerFlow en un dominio, pero el uso de cuentas / certificados de servicio provoca una solicitud de 400 BAD

Los scopes utilizados son

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/admin.directory.group.readonly https://www.googleapis.com/auth/admin.directory.user.readonly https://docs.google.com/feeds/ https://spreadsheets.google.com/feeds 

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

Aquí está el código que estoy usando

SUCESOS: OAuth2.0

 flow = OAuth2WebServerFlow(client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope=SCOPE, access_type = "online", redirect_uri=REDIRECT_URI) credentials = flow.step2_exchange(code) auth2token = gauth.OAuth2Token( client_id=credentials.client_id, client_secret=credentials.client_secret, scope=SCOPE, access_token=credentials.access_token, refresh_token=credentials.refresh_token, user_agent='spreadsheetclient/1.0',) client = SpreadsheetsClient(auth_token=auth2token) auth2token.authorize(client) q = SpreadsheetQuery(title= "ItemMaster",title_exact=True) feed = client.get_spreadsheets(query = q) 

FALLO Oauth2.0 Certificado

 credentials = SignedJwtAssertionCredentials( SERVICE_ACCOUNT_EMAIL, CERTIFICATE, scope = SCOPE, prn = "admin@domain.com" ) http = httplib2.Http() http = credentials.authorize(http) auth2token = gauth.OAuth2Token( client_id=credentials.client_id, client_secret=credentials.client_secret, scope=SCOPE, access_token=credentials.access_token, refresh_token=credentials.refresh_token, user_agent='spreadsheetclient/1.0',) client = SpreadsheetsClient() auth2token.authorize(client) q = SpreadsheetQuery(title= "ItemMaster",title_exact=True,) feed = client.get_spreadsheets(query = q) 

Entonces, ¿hay una manera de hacer que la autenticación de certificado funcione para la API de Gdata?

Lo resolví utilizando OAuth2TokenFromCredentials

  credentials = SignedJwtAssertionCredentials( SERVICE_ACCOUNT_EMAIL, PRIVATE_KEY, scope = SCOPE, sub = "admin@domain.com") auth2token = gauth.OAuth2TokenFromCredentials(credentials) client = SpreadsheetsClient() auth2token.authorize(client) q = SpreadsheetQuery(title= "ItemMaster",title_exact=True,) feed = client.get_spreadsheets(query = q) self.response.write(feed)