web-dev-qa-db-fra.com

authentification gspread jetant une autorisation insuffisante

À l'aide de developers.google.com, nous avons créé un utilisateur api et téléchargé les informations d'identification sous forme de fichier json. Maintenant sur mon macbook, l'authentification gspread fonctionne correctement avec credentials.json. lorsqu’il est déplacé de la même manière sur le serveur linux, il génère une erreur d’autorisation insuffisante.

Les versions pip et python sont identiques.

exception

gspread.v4.exceptions.APIError: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}

code de base

import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)

sheet = client.open('MySheetName').sheet1
8
Ahsan Naseem

Essayez de changer votre variable scope comme suit:

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

Assurez-vous que Drive API est activé dans la console API.

gspread a été mis à niveau et repose maintenant sur API v4. C'est plus rapide mais cela nécessite des mises à jour de la portée.

Voici le même problème: https://github.com/burnash/gspread/issues/512

23
Burnash

Vous semblez utiliser un compte de service. Pour que le compte de service puisse accéder à votre feuille de calcul, il doit y avoir accès.

Assurez-vous de partager la feuille avec l'adresse e-mail du compte de service, vous pouvez le faire via la page Web Google Drive

0
DaImTo

SI vous ne pouvez pas accéder même après avoir mis à jour l'étendue, essayez d'exécuter cette commande dans votre terminal:

Pipe Sudo installer 'gspread == 0.6.2' - forcer-réinstaller

0
Yogamurthy