无法从 Microsoft oauth、msal 节点 js 库中获取刷新令牌

问题描述

我正在尝试使用库 @azure/msal-node 实现与 Microsoft 的登录 我能够使用 authorization_code 流接收访问令牌和 ID 令牌,但无法获得刷新令牌。我还添加offline_access 范围。

我找到了一种使用 acquiretokenSilent 解决此问题的方法,但这对我来说也不起作用。

首次登录

const microsoftAuthConfig = {
    auth: {
      clientId: process.env.MICROSOFT_CLIENT_ID,authority: process.env.MICROSOFT_AUTHORITY,clientSecret: process.env.MICROSOFT_CLIENT_SECRET,},};

  const msalClient = new msal.ConfidentialClientApplication(
    microsoftAuthConfig
  );

const authCodeUrlParameters = {
    accesstype: 'offline',responseType: 'code',redirectUri: 'http://localhost:9000/api/auth/microsoft/redirect',state: 'sign in',scopes: [
      'user.read','openid','profile','email','Calendars.ReadWrite','offline_access',],prompt: 'select_account',};

msalClient
    .getAuthCodeUrl(authCodeUrlParameters)
    .then((response) => {
      res.status(301).redirect(response);
    })
    .catch((error) => console.log(JSON.stringify(error)));

使用代码获取令牌

if (req.query.code) {
    const tokenRequest = {
      code: req.query.code,accesstype: 'offline',grantType: 'authorization_code',scopes: [
        'user.read',};

    msalClient
      .acquiretokenByCode(tokenRequest)
      .then((response) => {
        console.log('\nResponse: \n:',response);
        res.cookie('auth-microsoft',response.idToken,{
          httpOnly: true,});
        return res.status(301).redirect('http://localhost:3000');
      })
      .catch((error) => {
        console.log(error);
        // res.status(500).send(error);
      });
  }

在此之后,我获得了访问令牌和 ID 令牌,但没有获得刷新令牌。

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)