2010-09-20 95 views
3

我正在關注的example,我已經授權我的應用程序(=獲得訪問令牌),但在嘗試訪問這個收件箱中的結果:IMAP訪問Gmail收件箱與XOAUTH

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()調用上失敗。任何想法?

+0

你有沒有解決這個問題?我有同樣的問題。 – 2011-11-11 11:32:01

+0

你需要指定一個端口嗎? (993) – Malachi 2012-08-02 08:28:44

回答

2

上面的例子使用「匿名」身份驗證,但是,你必須設置「消費者密鑰」和「消費者揭祕」你已經在「管理域」控制面板在已設置的值:

https://accounts.google.com/ManageDomains

例子:

consumer = oauth.Consumer(<OAuth-Consumer-Key>, <OAuth-Consumer-Secret>) 
+0

只有擁有屬於自己的域時,這纔是真實的。 「匿名」密鑰/祕密按照三腳OAuth的Google示例代碼。 – 2012-06-09 10:26:02