CompactToken验证失败80049228

时间:2019-01-01 03:17:24

标签: microsoft-identity-platform

某些用户尝试使用Microsoft Sign In登录以通过MS Graph访问邮件时,会再次收到此错误。我有公司用户和个人(Hotmail.com)用户都显示此错误号,但对于大多数用户来说都可以正常工作。

这是电话:

None

这是返回的错误:

https://login.microsoftonline.com/common/oauth2/v2.0/token

有指针吗?在哪里可以找到对此错误编号的引用?

1 个答案:

答案 0 :(得分:0)

这意味着令牌已过期,需要刷新。如果您想在没有用户干预的情况下刷新它,则需要一个refresh_token,它在最初获得令牌时会返回。

以下是刷新方法:

function refreshTokenIfNeeded(tokenObj){
    let accessToken = oauth2.accessToken.create(tokenObj);

    const EXPIRATION_WINDOW_IN_SECONDS = 300;

    const { token } = accessToken;
    const expirationTimeInSeconds = token.expires_at.getTime() / 1000;
    const expirationWindowStart = expirationTimeInSeconds - EXPIRATION_WINDOW_IN_SECONDS;

    const nowInSeconds = (new Date()).getTime() / 1000;
    const shouldRefresh = nowInSeconds >= expirationWindowStart;


    let promise = Promise.resolve(accessToken)
    if (shouldRefresh) {
        console.log("outlook365: token expired, refreshing...")
        promise = accessToken.refresh()
    }
    return promise
}

tokenObj是您存储在数据库中的令牌对象。 确保它也有expires_at,否则oauth2.accessToken.create()将创建它并从当前时间开始计算。

更多详细信息可以在this tutorialthis github repo中找到(这是上面的代码的来源)