mik*_*son 6 microsoft-identity-platform
某些用户尝试使用Microsoft登录登录以通过MS Graph访问邮件时,会重新获得此错误。我有公司用户和个人(Hotmail.com)用户都显示此错误号,但对于大多数用户来说都可以正常工作。
这是电话:
https://login.microsoftonline.com/common/oauth2/v2.0/token
Run Code Online (Sandbox Code Playgroud)
这是返回的错误:
Code: InvalidAuthenticationToken
Message: CompactToken validation failed with reason code: 80049228
Run Code Online (Sandbox Code Playgroud)
有指针吗?在哪里可以找到该错误号的参考?
这意味着令牌已过期并且需要刷新。如果您想在没有用户交互的情况下刷新它,您将需要一个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
}
Run Code Online (Sandbox Code Playgroud)
tokenObj您存储在数据库中的令牌对象在哪里。确保它也有expires_at或以其他方式oauth2.accessToken.create()创建它并从当前时刻开始计算。
更多详细信息可以在本教程和这个 github 存储库中找到(这是上面代码的来源)
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |