I'm trying to get labels from a delegated Gmail account (a mailbox for the job). The problem is that I always get an error of the delegated account. To prove it I have created two accounts:
[email protected] [email protected]
I have set up the account [email protected] to access from [email protected].
I have entered the google console activating the use of the Gmail API. I have extracted the client_secret from both accounts to test. I have been launching the following script with different results according to userId.
from __future__ import print_function from googleapiclient.discovery import build from httplib2 import Http from oauth2client import file, client, tools
# If modifying these scopes, delete the file token.json. SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
def main():
"""Shows basic usage of the Gmail API.
Lists the user's Gmail labels.
"""
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
#flow = client.flow_from_clientsecrets('credentials.json.txt', SCOPES)
flow = client.flow_from_clientsecrets('client_secret_778365488036-aiik518cf5ohcvd71hmrpvuhk9ovg6o6.apps.googleusercontent.com.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))
# Call the Gmail API
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
if not labels:
print('No labels found.')
else:
print('Labels:')
for label in labels:
print(label['name'])
if __name__ == '__main__':
main()
The files that go client.flow_from_clientsecrets, are those of both accounts. When I tried to use the clientSecret of the mailbox + authenticate with my account felipe.rodriguez.fonte.dev, I get the labels of the dev account, but I need to access the mailbox with the credentials of dev (which is the case that I have at work).
When I authenticate with clientSecret of the DEV account, and in UserId I put the address of the mailbox, it gives me a 403 for the delegation.
Does anyone have any idea what I'm doing wrong?