1

Je suis ce tutoriel Using OAuth 2.0 for Server to Server Applications. J'essaie de me connecter à l'API Gmail en utilisant un compte de service.Application serveur Gmail API vers serveur (erreur de demande incorrecte)

Le code que je finis avec ressemble à ceci:

from oauth2client.service_account import ServiceAccountCredentials 
from httplib2 import Http 
from apiclient.discovery import build 
import json 

scopes = ['https://www.googleapis.com/auth/gmail.readonly'] 

credentials = ServiceAccountCredentials.from_json_keyfile_name('******.json', scopes) 

http_auth = credentials.authorize(Http()) 
service = build('gmail', 'v1', http=http_auth) 
request = service.users().messages().list(userId='me') 
response = request.execute() 

print json.dumps(response, sort_keys=True, indent=2) 

Cependant, quand je lance ce code, je reçois l'erreur suivante:

googleapiclient.errors.HttpError:https://www.googleapis.com/gmail/v1/users/me/messages?alt=json returned "Bad Request">

Quelqu'un peut-il me aider à comprendre où cette erreur vient de? Pensez à un compte de service en tant qu'utilisateur factice.

Répondre

0

Il possède un compte Google Drive et un compte Google Agenda. Ce que je ne connais pas, c'est d'avoir un compte Gmail.

Normalement, lorsque vous demandez des données en utilisant un compte de service, vous devez accorder au compte de service l'accès à ces données manuellement. Dans le cas de google drive, vous pouvez partager un dossier avec le compte de service lui permettant d'accéder à google drive. (Vous pouvez également télécharger sur son compte de lecteur, mais cela est hors de portée pour cette question)

Il est impossible d'autoriser un autre utilisateur à accéder à votre compte Gmail. Il n'est donc pas possible d'utiliser un compte de service avec un utilisateur Gmail normal. Compte. Remarque: Si ce compte n'est pas un compte Gmail utilisateur normal et qu'il s'agit en fait d'un compte google domains, vous pouvez accorder au compte de service l'accès à tous les e-mails des autres utilisateurs du domaine via la section admin.

Autre sage, vous devez vous pencher sur l'utilisation de Oauth2 pour accéder à Gmail.