Actualmente estoy tratando de hacer actualizaciones a las hojas de google a través de python y me encuentro con algunos problemas con los permisos.

He estado siguiendo las instrucciones de esta guía de Twilio: https://www.twilio.com/blog/2017/02/an-easy-way-to-read-and-write-to-a -google-spreadsheet-in-python.html

Estoy haciendo todo esto en Jupyter, y guardé el archivo JSON en el directorio de código adecuado. No tuve problemas para definir el alcance, la credibilidad y el cliente.

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_id.json', scope)
client = gspread.authorize(creds)

sheet = client.open("MixIQ Tracker").sheet1

He seguido todos los pasos para vincular los dos, pero recibo este error de API con la última línea.

APIError: {
"error": {
  "errors": [{
      "domain": "global",
      "reason": "insufficientPermissions",
      "message": "Insufficient Permission: Request had insufficient authentication scopes."
    }],
  "code": 403,
  "message": "Insufficient Permission: Request had insufficient authentication scopes."
 }
}

No estoy exactamente seguro de cómo resolver esto. ¡Cualquier indicación sería enormemente apreciada!

10
KirklandShawty 10 may. 2019 a las 23:05

3 respuestas

Si mira la documentación de los ámbitos de la API de Google, la url del alcance que está utilizando no es referenciado en cualquier lugar. Este podría ser el problema. Intente cambiar la URL del alcance a https://www.googleapis.com/auth/spreadsheets.

Además, asegúrese de que la API de la hoja de cálculo esté habilitada correctamente en su proyecto en la consola de desarrolladores de Google.

Alternativamente, puede probar la biblioteca Sheetfu (soy el autor), que maneja los ámbitos para ti.

3
Philippe Oger 13 may. 2019 a las 07:53

Use esto como su alcance:

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']

Antes de llamar a "ServiceAccountCredentials"

Deberá habilitar la API de Google Drive en "console.cloud.google", así como la API de hojas.

2
Iddos 22 jul. 2019 a las 05:51

Solo necesitas este alcance

scope = ["https://www.googleapis.com/auth/drive"]
0
Jack 31 dic. 2019 a las 11:26