Я пытаюсь подключиться к почтовому ящику gmail через API-интерфейс python. У меня есть рабочий пример для подключения к каталогу api для выполнения операций обслуживания пользователей, которые настроены и работают почти одинаково с этим кодом. Таким образом, я прошел через всю консоль разработчика и настройки безопасности для моего пользователя учетной записи службы, у которого есть почтовый ящик с тестовым электронным письмом, сидящим в нем, ожидающим, когда я прочитаю его с помощью этого кода. В настоящее время, мой вопрос заключается в том, что линии:gmail api http connection failed для правильно сконфигурированной учетной записи службы с делегированным доступом к домену
gmail_service = build('gmail', 'v1', http=http)
Броски:
File "./gmail_test.py", line 29, in <module> gmail_service = build('gmail', 'v1', http=http) NameError: name 'http' is not defined
Не совсем уверен, что я пропускаю как почти идентичны, специально предназначенные для доступа администратора SDk работает.
во всяком случае, вот код:
import urllib2
from httplib2 import Http
from googleapiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials
client_email = '<private>@developer.gserviceaccount.com'
with open("Unsubscribe Processing.p12") as f:
private_key = f.read()
creds = SignedJwtAssertionCredentials(
client_email,
private_key,
{
'https://www.googleapis.com/auth/gmail.readonly'
},
sub='[email protected]')
auth = creds.authorize(Http())
gmail_service = build('gmail', 'v1', http=http)
results = gmail_service.users().labels().list(userId='[email protected]').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()
Я на самом деле просто поймал, что сам. Забавно, как когда-то созданный хороший вопрос приводит вас к собственному ответу ... Во всяком случае, хороший улов, и спасибо! –
Нет проблем! –