2012-02-03 27 views
11

Tôi đang sử dụng Oauth 2.0 của Google để có được access_token của người dùng, nhưng tôi không biết cách sử dụng nó với imaplib để truy cập hộp thư đến.Truy cập Gmail Imap bằng mã thông báo truy cập OAuth 2.0

+0

Bạn đã tìm giải pháp chưa? Tôi đang xem xét việc viết lại một số thư viện hiện tại để chỉ sử dụng access_token. – Wasauce

Trả lời

10

dưới đây là mã cho IMAP với oauth 2,0

email = '[email protected]' 
access_token = 'vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg' 
auth_string = 'user=%s\1auth=Bearer %s\1\1' % (email, access_token) 

imap_conn = imaplib.IMAP4_SSL('imap.gmail.com') 
imap_conn.debug = 4 
imap_conn.authenticate('XOAUTH2', lambda x: auth_string) 
imap_conn.select('INBOX') 

để biết thêm chi tiết: http://google-mail-oauth2-tools.googlecode.com/svn/trunk/python/oauth2.py

+0

Mã đã chuyển sang github https://github.com/google/gmail-oauth2-tools/blob/master/python/oauth2.py –

-1

IMAP không hỗ trợ truy cập vào hộp thư mà không cần mật khẩu -> để imaplib doesnt

+1

IMAP hỗ trợ [SASL] (http://tools.ietf.org/html/rfc4959) dưới dạng tiện ích mở rộng –

1

Hiện nay bạn có thể sử dụng OAuth 1.0 để truy cập Gmail qua IMAP và SMTP, nhưng OAuth 2.0 chưa được hỗ trợ. Dưới đây là một liên kết đến thông tin thêm: https://developers.google.com/google-apps/gmail/oauth_overview

+0

Từ ngày 17 tháng 9 năm 2012 OAuth 2.0 cũng được hỗ trợ. –

1

Đây là điều mà tôi đã đá xung quanh. Tôi không muốn sắp xếp các thẻ truy cập làm mới và những thứ không phải bản thân mình - tôi cũng thấy có quá nhiều mã bản mẫu trong ví dụ của Google. Tôi quyết định chỉ viết các trình bao bọc rất đơn giản cho phép OAuth2 IMAP và SMTP sử dụng các thông tin xác thực và các đối tượng Flow từ google-api-python-client.

Hy vọng điều này sẽ giúp ai đó.

https://github.com/richieforeman/oauth2gmail