how to access gmail use python?
Question: I wanna access gmail use python and oauth2.0,so I download the oauth2.py from
"<http://google-mail-oauth2-tools.googlecode.com/svn/trunk/python/oauth2.py>".
And this is my demo:

    
    
    import oauth2
    import imaplib
    import email
    from oauth2client.client import OAuth2WebServerFlow
    from launchpadlib.credentials import access_token_page
    
    email = 'karlvorndoenitz@gmail.com'
    client_id = 'client_id'
    client_secret = 'client_secret'
    # Check https://developers.google.com/drive/scopes for all available scopes
    OAUTH_SCOPE = 'https://mail.google.com/'
    # Redirect URI for installed apps
    REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
    flow = OAuth2WebServerFlow(client_id, client_secret, OAUTH_SCOPE, REDIRECT_URI)
    authorize_url = flow.step1_get_authorize_url()
    print 'Go to the following link in your browser: ' + authorize_url
    authorization_code = raw_input("Please input the code:").strip()
    response = oauth2.AuthorizeTokens(client_id, client_secret, authorization_code)
    access_token = response['access_token']
    auth_string = oauth2.GenerateOAuth2String(email,access_token,base64_encode=True)
    print auth_string
    imap_conn = imaplib.IMAP4_SSL('imap.gmail.com')
    imap_conn.debug = 4
    imap_conn.authenticate('XOAUTH2',lambda x:auth_string)
    imap_conn.select('INBOX')
    

But the demo has some bugs,I don't know how to debug it.The information from
console:

    
    
      16:58.52 > KOMN1 AUTHENTICATE XOAUTH2
      16:58.79 < + 
      16:58.79 write literal size 204
      16:59.27 < + eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ==
      16:59.27 write literal size 204
      16:59.27 < KOMN1 NO Invalid SASL argument. d10if1169757igr.56
      16:59.27 NO response: Invalid SASL argument. d10if1169757igr.56
    Traceback (most recent call last):
      File "/home/karl/workspace/Gmail/download_gmail/download_gmail_api.py", line 33, in <module>
        imap_conn.authenticate('XOAUTH2',lambda x:auth_string)
      File "/usr/lib/python2.7/imaplib.py", line 351, in authenticate
        raise self.error(dat[-1])
    imaplib.error: Invalid SASL argument. d10if1169757igr.56
    

I need help.


Answer: The `auth_string` should not be `base64encoded`. I believe the
`IMAP4.authenticate` encodes it for you. It worked for me anyways.

For example: `auth_string = 'user=%s\1auth=Bearer %s\1\1' % (user,
access_token)`

