我正在尝试升级旧版邮件机器人以通过 Oauth2 而不是基本身份验证进行身份验证,因为它现在已在两天后被弃用。
该文档指出应用程序可以保留其原始逻辑,同时仅交换身份验证位
使用这些协议构建发送、阅读或以其他方式处理电子邮件的应用程序的应用程序开发人员将能够保留相同的协议,但需要为其用户实现安全、现代的身份验证体验。此功能构建在 Microsoft Identity 平台 v2.0 之上,支持访问 Microsoft 365 电子邮件帐户。
注意我已经明确选择了客户端凭据流程,因为文档指出
这种类型的授权通常用于必须在后台运行的服务器到服务器交互,而不需要立即与用户交互。
因此,我有一个 python 脚本,可以使用MSAL python 库检索访问令牌。现在我尝试使用该访问令牌向 IMAP 服务器进行身份验证。有一些现有的线程展示了如何连接到 Google,我想我的情况与此非常接近,只是我正在连接到 Office 365 IMAP 服务器。这是我的脚本
import imaplib
import msal
import logging
app = msal.ConfidentialClientApplication(
'client-id',
authority='https://login.microsoftonline.com/tenant-id',
client_credential='secret-key'
)
result = app.acquire_token_for_client(scopes=['https://graph.microsoft.com/.default'])
def generate_auth_string(user, token):
return 'user=%s\1auth=Bearer %s\1\1' % (user, token)
# IMAP time!
mailserver = 'outlook.office365.com'
imapport = 993
M = imaplib.IMAP4_SSL(mailserver,imapport)
M.debug = 4
M.authenticate('XOAUTH2', lambda x: generate_auth_string('user@mydomain.com', result['access_token'])) …Run Code Online (Sandbox Code Playgroud) 我想使用Oauth连接到Python中的Gmail.现在我已经从谷歌(链接)获得了xoauth.py脚本,生成令牌的工作正常,但我怎么能在另一个脚本中使用它呢?它将在Django中.
现在我的脚本登录如下:
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login("example@gmail.com", "password")
Run Code Online (Sandbox Code Playgroud)
但我想要更安全的东西.