oob ietf google example python oauth gmail gdata

python - ietf - Acceda al feed de átomos de Gmail utilizando OAuth



python oauth2 client (1)

Es posible que desee intentar acceder a los servidores IMAP de Google con OAuth en lugar de utilizar el feed ATOM. Después de un poco de google, encontré esto :

"Gmail admite OAuth sobre IMAP y SMTP a través de un estándar que llaman XOAUTH. Esto le permite autenticarse contra los servidores IMAP y SMTP de Gmail utilizando un token y secreto OAuth. También tiene el beneficio adicional de permitirle usar bibliotecas vaniat SMTP e IMAP. El paquete python-oauth2 proporciona bibliotecas IMAP y SMTP que implementan XOAUTH y envuelven imaplib.IMAP4_SSL y smtplib.SMTP. Esto le permite conectarse a Gmail con credenciales de OAuth usando bibliotecas estándar de Python.

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

Estoy tratando de tomar el feed de átomos de Gmail desde una aplicación de Python usando OAuth. Tengo una aplicación que funciona y que descarga el feed de Google Reader, y creo que debería ser simplemente una cuestión de cambiar el alcance y las URL de los feeds. Después de reemplazar las URL, todavía puedo obtener tokens de solicitud y acceso con éxito, pero cuando intento capturar la fuente con el token de acceso, aparece un error "401 no autorizado". Aquí está mi programa de prueba simple:

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

Notará que estoy usando ''anónimo / anónimo'' como mi clave / secreto OAuth, como se menciona en los documentos de Google para aplicaciones no registradas . Esto funciona bien para Google Reader, por lo que no veo ningún motivo por el que no debería funcionar para Gmail. ¿Alguien tiene alguna idea sobre por qué esto podría no funcionar, o cómo podría solucionarlo? Gracias.