403 недостаточно разрешения для Gmail API с Pythin - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь запустить gmail API для получения электронной почты от определенного пользователя.Однако я всегда получаю следующее сообщение об ошибке: googleapiclient.errors.HttpError: https://www.googleapis.com/gmail/v1/users/me/settings/filters?alt=json вернул «Недостаточное разрешение»>

Я испробовал все предложенные варианты, от изменения области действия до включения менее безопасных приложений в gmail.установка.Последнее, что мой код может быть неправильным:

from __future__ import print_function
from googleapiclient import discovery
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Setup the Gmail API
SCOPES = 'https://mail.google.com/'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.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'])
label_id = 'mine' # ID of user label to add
filter = {
    'criteria': {
        'from': 'string@test.com'
    }#,
    #'action': {
        #'addLabelIds': [label_id],
        #'removeLabelIds': ['INBOX']
    #}
}
result = service.users().settings().filters().create(userId='me', body=filter).execute()
print ('Created filter: %s' % result.get('id'))

Не могли бы вы мне помочь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 июля 2018

Простое удаление файла JSON, созданного с использованием file.Storage ('credentials.json') после изменения или добавления SCOPES, поможет вам снова запустить программу.

0 голосов
/ 02 июня 2018

Просто удалите файл credentials.json из папки, из которой вы запускаете этот скрипт, и перезапустите ваш скрипт с окончательным желаемым списком областей, таких как SCOPES = ['https://www.googleapis.com/auth/gmail.send',' https://www.googleapis.com/auth/gmail.labels']. Authorize,в появившемся всплывающем окне браузера появится список областей для нужной учетной записи gmail.Тогда у вас все будет готово.

История вопроса. Вероятно, вы разрешили менее разрешающие области (например, только для чтения) через экран браузера, который отображался при первом запуске run_flow ().Это создало бы файл с именем credentials.json в папке, где вы запустили скрипт.Этот credentials.json больше не восстанавливается в соответствии с вашим сценарием выше.Это просто заморожено с первого раза.Просто для любопытства вы можете открыть и прочитать credentials.json и найти ключевые «области видимости».Конечно, вы не можете добавить больше областей в этот файл вручную и ожидать, что новые области будут работать.Это должно быть восстановлено для другого набора областей, если таковые имеются.

Несвязанное предостережение: избегайте слишком разрешительной области действия https://mail.google.com/, если это вообще возможно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...