【问题标题】:Read Outlook inbox with oauth2 authentication - error NO AUTHENTICATE failed使用 oauth2 身份验证读取 Outlook 收件箱 - 错误 NO AUTHENTICATE 失败
【发布时间】:2022-11-21 20:43:21
【问题描述】:

我正在尝试将 node imap 库连接到 Outlook 电子邮件收件箱。

Outlook 需要 oauth2 身份验证,这是我的代码,它尝试使用 msal 库检索到的 oauth2 令牌连接到 IMAP 服务器。

我遵循了本指南: https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth

async function getMSToken(){

  let msalConfig = {
    auth: {
      clientId: "1cf7d7ff-*****************",
      authority: "https://login.microsoftonline.com/880c05e3-*****************",
      clientSecret: "azQ8Q~eU.*****************",
    }
  };

  const cca = new msal.ConfidentialClientApplication(msalConfig);

  let tokenRequest = {
    scopes: [ "https://graph.microsoft.com/.default" ],
  };

  let { accessToken } = await cca.acquireTokenByClientCredential(tokenRequest);
  console.log("accessToken", accessToken);

  let user = "*****************@*****************";

  return btoa('user=' + user + '^Aauth=Bearer ' + accessToken + '^A^A');

}

async function connect(){

  let token = await getMSToken();
  console.log("tokenConverted", token);

  imap = new Imap({
    xoauth2: token,
    host: 'outlook.office365.com',
    port: 993,
    tls: true,
    debug: console.log
  });

  imap.once("ready", () => {

    console.log("connected");

  });

  imap.once("error", function(err) {
    console.error("Error connecting", err);
  });

  console.log("connecting...");
  imap.connect();

}

msal 库向我返回一个访问令牌,但是当我尝试连接到 IMAP 服务器时,这是连接日志:

<= '* OK The Microsoft Exchange IMAP4 service is ready. [QQBNADUAUABSADAANwAwADEAQwBBADAAMAAyADQALgBlAHUAcgBwAHIAZAAwADcALgBwAHIAbwBkAC4AbwB1AHQAbABvAG8AawAuAGMAbwBtAA==]'
=> 'A0 CAPABILITY'
<= '* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+'
<= 'A0 OK CAPABILITY completed.'
=> 'A1 AUTHENTICATE XOAUTH2 ***********************'
<= 'A1 NO AUTHENTICATE failed.'

这些是租户的权限:

如果我尝试范围https://outlook.office365.com/IMAP.AccessAsUser.Allmsal 库的响应是:

1002012 - [2022-10-24 14:46:27Z]: AADSTS1002012: The provided value for scope https://outlook.office365.com/IMAP.AccessAsUser.All is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI).\r\n

我可以尝试什么? 谢谢!

【问题讨论】:

  • 嗨,我有同样的问题。你设法解决这个问题了吗?你能分享你的解决方案吗?

标签: node.js oauth-2.0 outlook


【解决方案1】:

yeah bohat bara masla hy iska kuch krna paray ga

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 2022-10-22
    • 2021-01-05
    • 2021-05-22
    • 2015-01-10
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多