使用XOAUTH访问Gmail收件箱的IMAP

3

我正在遵循示例,我已经授权我的应用程序(=获得访问令牌),但尝试访问收件箱会导致以下问题:

  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()调用时失败了。有任何想法吗?


你需要指定一个端口吗?(993) - Malachi
1个回答

2
上面的示例使用“匿名”进行身份验证,但是您必须将“Consumer Key”和“Consumer Secret”设置为在“管理域”控制面板中已设置的值: https://accounts.google.com/ManageDomains 例如:
consumer = oauth.Consumer(<OAuth-Consumer-Key>, <OAuth-Consumer-Secret>)

只有在您拥有自己的域名时才是真实的。'anonymous'密钥/秘密与Google 3-legged OAuth示例代码相同。 - Joe Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接