Utilice las credenciales predeterminadas de la aplicación en Google Compute Engine para acceder a Sheets API

¿El flujo de trabajo ADC (Credenciales predeterminadas de la aplicación) solo admite las API de Google Cloud (por ejemplo, admite la API de Google Cloud Storage, pero no la API de Google Sheet)?

Me refiero a método predeterminado de @ google.auth - no tener que almacenar ninguna clave privada con el código es una gran victoria y el principal beneficio de hacer un uso efectivo de la configuración ADC (Credenciales predeterminadas de la aplicación).

l siguiente código funciona si configuro elGOOGLE_APPLICATION_CREDENTIALS variable ambiental al archivo de clave privada, digamos key.json. Esto está en línea con ladefaultétodo @ según el paso 1 degoogle.auth paquete:1. If the environment variable GOOGLE_APPLICATION_CREDENTIALS is set to the path of a valid service account JSON private key file, then it is loaded and returned.

import google.auth
from apiclient import discovery

credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/spreadsheets'])

sheets = discovery.build('sheets', 'v4', credentials=credentials)

SPREADSHEETID = '....'

result = sheets.spreadsheets().values().get(spreadsheetId=SPREADSHEETID, range='Sheet1!A:B').execute()

print result.get('values', [])

Ahora, mirando el paso 4 del método:4. If the application is running in Compute Engine or the App Engine flexible environment then the credentials and project ID are obtained from the Metadata Service.

Si elimino laGOOGLE_APPLICATION_CREDENTIALS variable ambiental en una instancia de Google Compute, aparece el siguiente error:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/..../values/Sheet1%21A%3AB?alt=json returned "Request had insufficient authentication scopes.">

Esto no es coherente con el asistente de Google según la consola de la nube:

Respuestas a la pregunta(1)

Su respuesta a la pregunta