引用了https://msdn.microsoft.com/en-us/office/office365/api/use-outlook-rest-api。我仍然不能理解AD,Outlook和Windows Live。
我从https://login.microsoftonline.com/common/oauth2/v2.0/authorizehttps://login.microsoftonline.com/common/oauth2/v2.0/token获得了刷新令牌和访问令牌
和范围
openid email profile offline_access https://outlook.office.com/mail.sendhttps://outlook.office.com/mail.readwrite
我仍然得到错误,而连接imap使用访问令牌。
imap.authenticate('XOAUTH2', 'xxxxxxx', access_token)
Net::IMAP::NoResponseError: AUTHENTICATE failed.
字符串
4条答案
按热度按时间ny6fqffe1#
我终于让这个工作。有趣的是,我不得不使用范围
https://outlook.office365.com/IMAP.AccessAsUser.All
,虽然现在你必须在Azure AD中的Graph API部分下注册你的应用程序,并且建议的范围是https://graph.microsoft.com/IMAP.AccessAsUser.All
,这对我不起作用(身份验证失败)。虽然我不确定这在不久的将来是否会改变。我使用的属性如下:https://javaee.github.io/javamail/OAuth2
字符串
rqqzpn5f2#
对于那些询问个人帐户IMAP的人-Outlook.com
-- re:comment
显然,消费者Outlook.com(也称为live.com)的作用域是
wl.imap
。参见Scopes and permissions上的旧Microsoft文档。
也可以看看这个例子,其中提到了相同的范围:
http://afterlogic.com/mailbee-net/docs/OAuth2MicrosoftRegularAccountsInstalledApps.html的
顺便说一句,我们从 Clever Components 文章中看到了旧的Microsoft文档:
https://www.clevercomponents.com/articles/article049/的
它有一个指向微软文档的链接:
https://msdn.microsoft.com/en-us/windows/desktop/dn440163的
它在页面末尾列出的相关部分中有一个到
Scopes and permissions
的链接:https://msdn.microsoft.com/en-us/windows/desktop/hh243646的
在 Clever Components 文章中,他们使用了两个作用域
wl.imap
和wl.offline_access
。他们指出:
Microsoft建议将“wl.offline_access”作用域与“wl.imap”一起使用。否则,只有当用户登录Live Connect并使用您的应用时,应用才能访问用户的信息。
因此,如果您的应用程序需要连续访问,则需要包括脱机访问范围。
isr3a4wc3#
请参阅2020年4月30日的最新Microsoft公告。
Announcing OAuth 2.0 support for IMAP, SMTP client protocols in Exchange Online
今天,我们宣布OAuth 2.0 authentication for IMAP, SMTP AUTH protocols可用于Exchange Online邮箱。
mxg2im7a4#
这使得我自己的OAuth IMAP实现非常令人沮丧,因为Microsoft's own documentation on this topic仍然建议使用
offline_access
和https://outlook.office365.com/IMAP.AccessAsUser.All
等端点。但是,当尝试在Azure门户中注册新应用程序并转到“API权限”侧边栏选项卡并选择“添加权限”时,“请求API权限”侧边栏弹出窗口没有任何地方提到
Office 365 Exchange Online
。它可以在“我的组织使用的API”下找到。选项卡并从列表中选择它,但在列表中没有与IMAP.AccessAsUser.All
匹配的应用程序或委托权限,尽管这是所有https://outlook.office.com/*
API端点的适当部分。最后,事实证明,您必须使用“请求API验证”屏幕顶部的大型“Microsoft Graph”API按钮,并从那里选择
offline_access
和IMAP.AccessAsUser.All
。但不要使用它启用的graphs.microsoft.com URL。继续使用范围字符串:offline_access https://outlook.office365.com/IMAP.AccessAsUser.All
为这两个,OAuth将在作为用于在OAuth弹出窗口中进行身份验证的电子邮件地址进行身份验证时起作用。尽管
IMAP.AccessAsUser.All
仅此还不足以允许帐户在获得OAuth令牌后使用不同的From:
地址发送。OAuth令牌也仅对用于为应用程序生成OAuth承载令牌的电子邮件地址有效。必须委派更多权限才能访问其他邮箱。