使用 OAuth 2.0 访问令牌访问 Gmail Imap

Posted

技术标签:

【中文标题】使用 OAuth 2.0 访问令牌访问 Gmail Imap【英文标题】:Access Gmail Imap with OAuth 2.0 Access token 【发布时间】:2012-02-26 09:58:32 【问题描述】:

我正在使用 Google 的 Oauth 2.0 获取用户的 access_token,但我不知道如何使用它与 imaplib 一起访问收件箱。

【问题讨论】:

您找到解决方案了吗?我正在考虑重写一些当前的库以仅使用 access_token。 【参考方案1】:

以下是带有 oauth 2.0 的 IMAP 的代码

email = 'k@example.com'
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')

更多详情请参阅library code。

【讨论】:

代码已移至github github.com/google/gmail-oauth2-tools/blob/master/python/…【参考方案2】:

目前您可以使用 OAuth 1.0 通过 IMAP 和 SMTP 访问 Gmail,但尚不支持 OAuth 2.0。这里是更多信息的链接:https://developers.google.com/google-apps/gmail/oauth_overview

【讨论】:

从 2012 年 9 月 17 日起也支持 OAuth 2.0。【参考方案3】:

这是我一直在玩的东西。我不想处理刷新访问令牌和我自己的问题——我还发现 Google 示例中有太多样板代码。我决定只编写非常简单的包装器,允许 OAuth2 IMAP 和 SMTP 使用来自 google-api-python-client 的 Credentials 和 Flow 对象。

希望这对某人有所帮助。

https://github.com/richieforeman/oauth2gmail

【讨论】:

【参考方案4】:

IMAP 不支持无密码访问收件箱 -> 所以 imaplib 不支持

【讨论】:

以上是关于使用 OAuth 2.0 访问令牌访问 Gmail Imap的主要内容,如果未能解决你的问题,请参考以下文章

OAuth 2.0 访问令牌未加密?

使用 Google Drive Oauth 2.0 管理访问令牌

OAuth 2.0 访问令牌已过期,刷新令牌不可用

使用 OAuth 2.0 Google App Engine 刷新访问令牌

对 Gmail API 使用 oauth 令牌的疑问

您可以让 Google OAuth 2.0 访问令牌持续更长时间吗?