2016-09-06 3 views
0

Я пишу небольшой скрипт, чтобы помочь нашим сторонникам в pyhton. Я хотел бы создать пару ярлыков для новых пользователей, но у меня ошибка при аутентификации.GMail API управляет ярлыками с пользователем сервиса

Вот некоторые важные части кода:

delegated_credentials = self.credentials.create_delegated(self.p.mail) 
    http = delegated_credentials.authorize(httplib2.Http()) 
    self.service_gmail = discovery.build('gmail', 'v1', http=http) 

    for i in groupstoadd: 
     print "| |-> {}".format(i) 
     self.service_gmail.users().labels().create(userId=self.p.mail, body={"name": i}).execute() 

так self.credentials работает таким же образом, в коде, с учетной записью администратора, так что я могу создать этот пользователь раньше. . Но когда я пытаюсь вызвать ... этикетки() создать я получаю это:

Error: (<class 'oauth2client.client.HttpAccessTokenRefreshError'>, HttpAccessTokenRefreshError(u'unauthorized_client: Unauthorized client or scope in request.',), <traceback object at 0x7f205667a9e0>) 

Самой смешным, если я использую мой администратор электронную почту в делегате и создать его работу. Итак, вопрос, если я должен каким-то образом включить GMAIL API для нового пользователя? (Доменные широкий поддержкой API, наверняка)

а также self.credentials часть:

self.credentials = ServiceAccountCredentials.from_json_keyfile_name(CreateGA.CLIENT_SECRET_FILE, scopes=CreateGA.SCOPES) 

И прицелы:

SCOPES = [ 
       'https://www.googleapis.com/auth/admin.directory.user', 
       'https://www.googleapis.com/auth/admin.directory.group', 
       'https://www.googleapis.com/auth/admin.directory.user.security', 
       'https://www.googleapis.com/auth/gmail.labels', 
    ] 

Большое спасибо заранее! P.

ответ

0

Области «admin. *» Не работают с API Gmail, чтобы использовать API для обновления ярлыков, вам понадобится только область gmail.labels.

Чтобы использовать API Gmail с передачей домена (поддержка людей имеет доступ к любому пользователю в домене), вам необходимо следовать these docs on setting up Domain-wide delegation. В частности, белый список проекта разработчика в домене CPanel, а затем поток «JWT» для создания токена аутентификации для каждого пользователя. Затем используйте эти учетные данные, чтобы сделать запрос для пользователя Gmail против API.

+0

Область администрирования для создания нового пользователя, и я думаю, что DWD работает, поскольку пользователь службы может взять на себя моего пользователя-администратора и создать пользователя. Alto Я должен проверить, что CPanler JWT вещь. Спасибо за подсказку, я вернулся, если мне удалось заставить его работать! :) –

+0

Хорошо, проблема была другая –

+0

(извините за дополнительный ввод), если я подожду 60 секунд, прежде чем возиться с ярлыками после создания пользователя, мой код работает .... wuuu huuu :) Похоже на проблему с синхронизацией, я думаю пользователь как сущность создается, поскольку я могу назначить его в группы уже, buenut, создание входящих сообщений занимает некоторое дополнительное время ... Мех, по крайней мере, он работает сейчас, поэтому спасибо за помощь! –

0

Проблема была связана с временем, похоже, что почтовый ящик GMail требует некоторого времени для создания после создания пользователя. Я пробовал через 60 секунд, конечно, может быть, цикл повторов выполняется быстрее. В любом случае, я могу продолжить сейчас :) Спасибо за все ответы.

Смежные вопросы