Atom-лента Gmail доступа с помощью OAuth

Я пытаюсь захватить Atom-ленту Gmail из приложения Python с помощью OAuth. У меня есть рабочее приложение, которое загружает канал Google Reader, и я думаю, что это должно просто быть вопросом изменения объема и подать URL. После замены URL я могу все еще успешно получить Запрос и Маркеры доступа, но когда я пытаюсь захватить канал с помощью Маркера доступа, я получаю "401 Несанкционированную" ошибку. Вот моя простая тестовая программа:

import urlparse
import oauth2 as oauth

scope = "https://mail.google.com/mail/feed/atom/"
sub_url = scope + "unread"

request_token_url = "https://www.google.com/accounts/OAuthGetRequestToken?scope=%s&xoauth_displayname=%s" % (scope, "Test Application")
authorize_url = 'https://www.google.com/accounts/OAuthAuthorizeToken'
access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken'

oauth_key = "anonymous"
oauth_secret = "anonymous"

consumer = oauth.Consumer(oauth_key, oauth_secret)
client = oauth.Client(consumer)

# Get a request token.
resp, content = client.request(request_token_url, "GET")
request_token = dict(urlparse.parse_qsl(content))

print "Request Token:"
print "    - oauth_token        = %s" % request_token['oauth_token']
print "    - oauth_token_secret = %s" % request_token['oauth_token_secret']
print

# Step 2: Link to web page where the user can approve the request token.
print "Go to the following link in your browser:"
print "%s?oauth_token=%s" % (authorize_url, request_token['oauth_token'])
print

raw_input('Press enter after authorizing.')

# Step 3: Get access token using approved request token
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
client = oauth.Client(consumer, token)

resp, content = client.request(access_token_url, "POST")
access_token = dict(urlparse.parse_qsl(content))

print "Access Token:"
print "    - oauth_token        = %s" % access_token['oauth_token']
print "    - oauth_token_secret = %s" % access_token['oauth_token_secret']
print

# Access content using access token
token = oauth.Token(access_token['oauth_token'], access_token['oauth_token_secret'])
client = oauth.Client(consumer, token)

resp, content = client.request(sub_url, 'GET')
print content

Вы заметите, что я использую 'anonymous/anonymous'' в качестве своего ключа/секрета OAuth, как упомянуто в документах Google для незарегистрированных приложений. Это хорошо работает для Google Reader, таким образом, я не вижу оснований, почему это не должно работать на Gmail. У кого-либо есть какая-либо идея о том, почему это не могло бы работать, или как я мог пойти о поиске и устранении неисправностей ее? Thanks.

6
задан Will 3 July 2010 в 04:50
поделиться

1 ответ

Возможно, вы захотите попробовать получить доступ к IMAP-серверам Google с помощью OAuth вместо использования ATOM-ленты. Немного погуглив, я нашел вот это:

"Gmail поддерживает OAuth через IMAP и SMTP с помощью стандарта, который они называют XOAUTH. Это позволяет вам аутентифицироваться на серверах Gmail IMAP и SMTP используя токен и секрет OAuth. Это также имеет дополнительное преимущество, позволяя использовать ванильные SMTP и IMAP библиотеки. Пакет python-oauth2 предоставляет библиотеки IMAP и SMTP которые реализуют XOAUTH и обертывают imaplib.IMAP4_SSL и smtplib.SMTP. Это позволяет вам подключаться к Gmail с учетными данными OAuth, используя стандартные библиотеки Python."

from http://github.com/simplegeo/python-oauth2

3
ответ дан 17 December 2019 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: