无法在我的节点应用程序中使用Microsoft身份平台交换身份验证代码以获取访问令牌

时间:2019-05-09 00:29:40

标签: node.js azure outlook access-token simple-oauth2

我正在使用Microsoft身份平台实施OAuth2。为此,我将应用程序注册到Azure Active Directory管理中心,并获得了应用程序ID和其他应用程序凭据。还提到了重定向网址。

因此,首先,我生成了auth-url(下面提供了代码段),并获得了到我的重定向端点的auth-code。当我尝试交换身份验证代码以获取访问令牌时,它会作为状态码401抛出异常,错误消息为“ 401未经授权”。

我正在使用simple-oauth2节点程序包。 这是我的代码段,用于生成auth-url

function authUrl() {
    const url = oauth2.authorizationCode.authorizeURL({
        redirect_uri: outlookCalendar.REDIRECT_URI,
        scope: outlookCalendar.APP_SCOPES
    });
    return url;
}

其中APP_SCOPES =“ User.Read https://outlook.office.com/Calendars.ReadWrite

这是上述代码生成的auth-url

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id=xxxxxxxxxxxx&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcalendars%2Foutlook%2Fcode&scope=User.Read%20https%3A%2F%2Foutlook.office.com%2FCalendars.ReadWrite

这是获取访问令牌的功能

async function accessToken(code) {
    try {
        const result = await oauth2.authorizationCode.getToken({
            code : code,
            redirect_uri: outlookCalendar.REDIRECT_URI,
            scope: outlookCalendar.APP_SCOPES
        });

        const token = oauth2.accessToken.create(result);
        console.log('Token created: ', token.token);

        return { tokens: token.token.access_token };
    } catch (exception) {
        console.log(exception);
        return { error: exception };
    }
}

所以,请任何人告诉我获取访问令牌的方式,或者我的代码出了点问题。 谢谢...

0 个答案:

没有答案