使用XOAUTH访问Gmail收件箱的IMAP
我正在参考这个示例,我已经授权了我的应用程序(也就是拿到了访问令牌),但是尝试访问收件箱时出现了这个问题:
21:14.12 > NDIB1 AUTHENTICATE XOAUTH
21:14.17 < +
21:14.17 write literal size 480
21:14.74 < NDIB1 NO [ALERT] Invalid credentials (Failure)
21:14.74 NO response: [ALERT] Invalid credentials (Failure)
这是我的代码:
import xoauth
import oauth2 as oauth
import imaplib
consumer = oauth.Consumer('anonymous', 'anonymous')
access_token = oauth.Token(my_access_token, my_access_token_secret)
user = my_gmail_address
proto = "imap" # is it right???
xoauth_requestor_id = user # and this???
xoauth_string = xoauth.GenerateXOauthString(consumer, access_token, user, proto, xoauth_requestor_id, '', '')
conn = imaplib.IMAP4_SSL('imap.googlemail.com')
conn.debug = 4
conn.authenticate('XOAUTH', lambda x: xoauth_string)
conn.select('INBOX')
print conn.list()
在调用 conn.authenticate() 的时候出错了。有什么想法吗?
1 个回答
2
上面的例子使用了“匿名”来进行身份验证,但你必须将“消费者密钥”和“消费者秘密”设置为你在“管理域名”控制面板中已经设置的值,地址是:
https://accounts.google.com/ManageDomains
示例:
consumer = oauth.Consumer(<OAuth-Consumer-Key>, <OAuth-Consumer-Secret>)