microsoft-identity-platform - CompactToken 验证失败 80049228
问题描述
一些用户在尝试使用 Microsoft 登录以通过 MS Graph 访问邮件时收到此错误。我已经让企业用户和个人 (Hotmail.com) 用户都显示了这个错误号,但它对大多数用户来说都很好。
这是电话:
https://login.microsoftonline.com/common/oauth2/v2.0/token
这是返回的错误:
Code: InvalidAuthenticationToken
Message: CompactToken validation failed with reason code: 80049228
任何指针?在哪里可以找到此错误号的参考?
解决方案
这意味着令牌已过期,需要刷新。如果您想在没有用户交互的情况下刷新它,则需要在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()
创建它并从当前时刻开始计算。
更多细节可以在本教程和这个 github repo中找到(这是上面代码的来源)
推荐阅读
- osgi - 跟踪整个 repo 中节点上的移动操作
- scala - Spark Checkpoint 分区无法转换为 CoGroup 分区
- python - PyQt5 错误:此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“xcb”
- c++ - 在地图中使用步幅
- r - 删除列中的某些值(包含特定字符)
- jenkins - Jenkins 作业通过后,工作节点上的进程不会被杀死
- javascript - 我应该使用 mixins 还是实用程序类?
- python-3.x - 我如何使用户输入的任何其他内容都会收到错误消息,除了我的命令
- apache-spark - 从pyspark对ORC格式的Hive表执行查询时如何避免AssertionError?
- css - 角度css表格单元格多个图标和材质标签在同一行