Han*_*ood 9 python django oauth imaplib
我想使用Oauth连接到Python中的Gmail.现在我已经从谷歌(链接)获得了xoauth.py脚本,生成令牌的工作正常,但我怎么能在另一个脚本中使用它呢?它将在Django中.
现在我的脚本登录如下:
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login("example@gmail.com", "password")
但我想要更安全的东西.
Aco*_*orn 11
以下是使用该oauth2模块使用oauth进行身份验证的示例,取自自述文件:
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()
比使用更清洁xoauth.
Google 有一个很好的示例代码来执行OAuth2 和 IMAP。还要确保您的范围正确。
'scope': 'https://mail.google.com/'
'access_type': 'offline'
以下是来自谷歌示例中的代码示例
import base64
import imaplib
my_email = "xyz@gmail.com"
access_token = ""    #Oauth2 access token
auth_string = GenerateOAuth2String(my_email, access_token, base64_encode=False)
TestImapAuthentication(my_email, auth_string)
def TestImapAuthentication(user, auth_string):
  """Authenticates to IMAP with the given auth_string.
  Prints a debug trace of the attempted IMAP connection.
  Args:
    user: The Gmail username (full email address)
    auth_string: A valid OAuth2 string, as returned by GenerateOAuth2String.
        Must not be base64-encoded, since imaplib does its own base64-encoding.
  """
  print
  imap_conn = imaplib.IMAP4_SSL('imap.gmail.com')
  imap_conn.debug = 4
  imap_conn.authenticate('XOAUTH2', lambda x: auth_string)
  imap_conn.select('INBOX')
def GenerateOAuth2String(username, access_token, base64_encode=True):
  """Generates an IMAP OAuth2 authentication string.
  See https://developers.google.com/google-apps/gmail/oauth2_overview
  Args:
    username: the username (email address) of the account to authenticate
    access_token: An OAuth2 access token.
    base64_encode: Whether to base64-encode the output.
  Returns:
    The SASL argument for the OAuth2 mechanism.
  """
  auth_string = 'user=%s\1auth=Bearer %s\1\1' % (username, access_token)
  if base64_encode:
    auth_string = base64.b64encode(auth_string)
  return auth_string
| 归档时间: | 
 | 
| 查看次数: | 8707 次 | 
| 最近记录: |