Я пытаюсь получить фид атомов Gmail из приложения Python, использующего OAuth. У меня есть работающее приложение, которое загружает фид Google Reader, и я думаю, что должно быть просто вопросом изменения области действия и URL фида. После замены URL я все еще могу успешно получить токены запросов и доступа, но когда я пытаюсь получить фид с помощью токена доступа, я получаю ошибку «401 Unauthorized». Вот моя простая тестовая программа:
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
Вы заметите, что я использую «анонимный / анонимный» в качестве своего ключа / секрета OAuth, как указано в документах Google для незарегистрированных приложений . Это хорошо работает для Google Reader, поэтому я не вижу причин, почему он не должен работать для Gmail. Кто-нибудь имеет какие-либо идеи о том, почему это не может работать, или как я мог бы устранить неполадки? Благодаря.