10
votes

Utilisez imaplib et oauth pour la connexion avec Gmail

Je veux utiliser Oauth pour vous connecter à Gmail en Python. En ce moment, j'ai le script xoauth.py de Google ( lien ) et générer un jeton fonctionne tout va bien, mais comment puis-je utiliser cela dans un autre script? Ça va être dans django.

Maintenant mon script se connecte comme ceci: xxx

mais je veux quelque chose de plus sécurisé.


0 commentaires

3 Réponses :


3
votes

Voici un exemple de connexion à IMAP à l'aide de routines présentes dans Google xoauthuth.py . Il produira des informations de débogage, vous voudrez donc probablement passer à l'utilisation de emballage OAuth pour une application réelle. Au moins cela devrait vous aider à démarrer: xxx


2 commentaires

Cela fonctionne en effet, merci. Comment ferais-je le faire avec le paquet OAuth?


Vous pouvez continuer à utiliser XoAuth tel que si vous pouvez tolérer les relevés d'impression ou simplement les déchirer de votre copie locale. Je n'ai pas utilisé personnellement oauth mais j'imagine que l'API est similaire. Il existe un exemple dans le référentiel OAuth: Exemple de client OAuth



14
votes

Voici un exemple en utilisant le oauth2 code> module pour authentifier à l'aide de OAuth, pris depuis le fichier README :

import oauth2 as oauth
import oauth2.clients.imap as imaplib

# Set up your Consumer and Token as per usual. Just like any other
# three-legged OAuth request.
consumer = oauth.Consumer('your_consumer_key', 'your_consumer_secret')
token = oauth.Token('your_users_3_legged_token', 
    'your_users_3_legged_token_secret')

# Setup the URL according to Google's XOAUTH implementation. Be sure
# to replace the email here with the appropriate email address that
# you wish to access.
url = "https://mail.google.com/mail/b/your_users_email@gmail.com/imap/"

conn = imaplib.IMAP4_SSL('imap.googlemail.com')
conn.debug = 4 

# This is the only thing in the API for impaplib.IMAP4_SSL that has 
# changed. You now authenticate with the URL, consumer, and token.
conn.authenticate(url, consumer, token)

# Once authenticated everything from the impalib.IMAP4_SSL class will 
# work as per usual without any modification to your code.
conn.select('INBOX')
print conn.list()


2 commentaires

Salut Acorn, je suis nouveau à Oauth2 et à IMAPLIB, et j'ai quelques questions maintenant, pouvez-vous y répondre à: Stackoverflow.com/Questtions/17976626/...


Je ne reçois pas où "your_users_3_legged_Token" et "your_users_3_legged_token_secret" vient de: /



4
votes

1 commentaires

Google fournit des exemples OAuth 1 & 2. Leur API OAuth 1 est amorti et je ne peux pas le faire travailler avec Django-Social-Auth. Ce qui est ci-dessus, OAuth 2 fonctionne bien avec Django-Social-Auth.