Je souhaite que mon serveur Web demande Google Doc via un compte de service. La raison pour laquelle j'ai choisi le compte de service est que je ne veux aucune information de connexion de mon utilisateur.
J'ai essayé le code ci-dessous mais cela génère des erreurs L'appelant n'a pas d'autorisation
.
SCOPES = ['https://www.googleapis.com/auth/documents'] SERVICE_ACCOUNT_FILE = 'xxx.json' credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES ) service = googleapiclient.discovery.build('docs', 'v1', credentials=credentials) response = service.documents().get(documentId='xxx').execute()
3 Réponses :
Si vous ne souhaitez pas usurper l'identité de l'utilisateur, vous devez partager le document avec le compte de service de Drive afin de lui donner l'autorisation de lecture / écriture
Vous devez vous assurer que le compte de service dispose des droits d'accès aux fichiers qu'il tente de lire / écrire.
Le message d'erreur L'appelant n'a pas d'autorisation
indique que le fichier avec l'ID documentID
dispose des autorisations de partage de sorte que le compte de service que vous utilisez n'a pas l'autorisation de faites ce que vous lui demandez - que ce soit la lecture ou l’écriture.
Si l'usurpation d'identité de l'utilisateur est vraiment impossible pour vous, le fichier doit être accessible via l'une des options de partage suivantes:
Si le compte de service appartient à un domaine différent de celui de l'utilisateur propriétaire du fichier:
Si le compte de service appartient au même domaine que l'utilisateur:
Vous pouvez également partager directement avec le compte de service en sélectionnant Désactivé - Personnes spécifiques
et en saisissant l'adresse e-mail du compte de service dans le champ Personnes
de la boîte de dialogue de partage du fichier lui-même. L'adresse e-mail du compte de service se trouve dans le projet GCP auquel il est associé - sur console.developers.google.com
J'espère que cela vous sera utile!
Instructions pour créer un compte de service et lire un document Google https://www.futurice.com/blog/read-goog-doc-using-service-account
Le document doit être partagé avec l'adresse e-mail du compte de service OU être partagé publiquement.