【问题标题】:Connect to outlook Office 365 IMAP using OAUTH2使用 OAUTH2 连接到 Outlook Office 365 IMAP
【发布时间】:2017-09-14 09:24:44
【问题描述】:

推荐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/authorize 获得了刷新令牌和访问令牌 https://login.microsoftonline.com/common/oauth2/v2.0/token

和范围

openid 电子邮件配置文件offline_access https://outlook.office.com/mail.send https://outlook.office.com/mail.readwrite

在使用访问令牌连接 imap 时仍然出现错误。

imap.authenticate('XOAUTH2', 'xxxxxxx', access_token)
Net::IMAP::NoResponseError: AUTHENTICATE failed.

【问题讨论】:

标签: email outlook oauth-2.0 office365 imap


【解决方案1】:

我终于让它工作了。 有趣的是,我不得不使用范围 https://outlook.office365.com/IMAP.AccessAsUser.All,尽管现在您必须在 Azure AD 的 Graph API 部分下注册您的应用程序,并且建议的范围是 https://graph.microsoft.com/IMAP.AccessAsUser.All,这对我不起作用(身份验证失败)。 虽然我不确定这是否会在不久的将来发生变化。

我使用了此处所述的属性:https://javaee.github.io/javamail/OAuth2

props.put("mail.imap.sasl.enable", "true");
props.put("mail.imap.sasl.mechanisms", "XOAUTH2");
props.put("mail.imap.auth.login.disable", "true");
props.put("mail.imap.auth.plain.disable", "true");

【讨论】:

  • 谢谢,这也是我一直在寻找的,但我遇到了不同的问题。此(图形)范围适用于 office365 帐户,同时给出错误 - 范围无效,如果我使用个人 Microsoft 帐户登录,如何解决?或者对于个人帐户,我需要使用不同的范围和 oath2 端点?
  • 个人帐户是指outlook.com 帐户?我没有测试过这些,但认为它们应该可以工作。我假设您必须使用不同的端点并且可能使用不同的范围。尚未找到任何相关文档。
  • 是的。我可以使用不同的端点 - login.live.com。但是 MS 在文档中已经不推荐它们了。这就是我问的原因。我也刚刚发现 - outlook.office365.com/IMAP.AccessAsUser 不适合我。范围无效它说:(
  • 我否决了这个答案,因为它不适用于官方范围 IMAP.AccessAsUser.All 并且范围 IMAP.AccessAsUser 不再存在。这可能会为一些人省去尝试这个的麻烦。显然 IMAP/SMTP 的 OAuth 仍在进行中。
  • 感谢您的意见。我已经调整了上面的答案,因为缺少第一个提到的范围末尾的.All。我同意,这不是最终解决方案,希望 Azure 目录中显示的以 graph 开头的范围将被使用,但截至目前它不起作用。不幸的是,我们不能再等待最终的解决方案,所以我们必须处理现在存在的问题。也许您可以编辑您的评论,以便更清楚我们在谈论哪些范围,区别在于前缀 URL,IMAP.AccessAsUser.All 部分实际上是相同的。
【解决方案2】:

对于那些询问个人帐户 IMAP 的用户 -- Outlook.com
--回复: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/

  • 注意:他们声称这是针对 Office365 的可能有问题,可能是他们的文档错误

其中包含指向 Microsoft 文档的链接:

https://msdn.microsoft.com/en-us/windows/desktop/dn440163

在页面末尾列出的相关部分中有指向Scopes and permissions 的链接:

https://msdn.microsoft.com/en-us/windows/desktop/hh243646

Clever Components 文章中,他们使用了两个作用域 wl.imapwl.offline_access
他们指出:

Microsoft 建议将“wl.offline_access”范围与“wl.imap”一起使用。否则,只有当用户登录 Live Connect 并使用您的应用时,应用才能访问用户的信息。”

因此,如果您的应用程序需要持续访问,那么您需要包含离线访问范围。

【讨论】:

【解决方案3】:

查看 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 邮箱。

【讨论】:

    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2012-04-27
    • 2017-04-27
    • 2018-06-09
    • 2018-08-30
    • 2020-10-24
    相关资源
    最近更新 更多