【问题标题】:Microsoft Graph API intermittent error "Token not found: token is either invalid or expired" resolves itself after retryMicrosoft Graph API 间歇性错误“找不到令牌:令牌无效或已过期”重试后自行解决
【发布时间】:2020-10-30 02:54:09
【问题描述】:

我正在向 Microsoft Graph REST api(测试版)发出请求,特别是向登录事件端点:https://graph.microsoft.com/beta/auditLogs/signIns

我正在发出批量请求,以 1000 个批次检索特定用户的登录信息。从 9 月 25 日左右开始,这些请求将在大约 10-50 个批次后失败,并返回以下响应,并返回 400(无效请求)HTTP错误代码:

"error": {
  "code": "",
  "message": "Token not found: token is either invalid or expired",
  "innerError": {
    "request-id": "[request-id-redacted]",
    "date": "2019-09-30T22:27:36"
  }
}

但是,如果我在等待 ~1 秒后重试请求,使用完全相同的 JWT Web 令牌,请求会成功,并且我能够完成我正在执行的作业的所有批处理请求跑步。我在最初进行身份验证时收到的访问令牌会在 1 小时内过期,但在我收到令牌后约 1-15 分钟会出现此错误(我已经确认了我通过令牌获得的 unix 时间戳到期日期)。

我想知道这个错误的原因是什么,以及我如何避免它,除了硬编码特定的响应消息并重试。我也无法在谷歌上找到错误消息的任何匹配项。以前有人从 Microsoft Graph API 中看到过这个错误吗?

【问题讨论】:

  • 在哪里可以解决这个问题?根据您的理解,错误消息是指 access token 还是从 API 接收到的 skip token 以检索下一批?在处理 1000 个批次和使用 signIns api-version=beta 时,我们也看到了同样的问题。谢谢
  • 看起来我们最终在遇到此错误时对重试进行了硬编码。但是,查看最近的日志,我没有看到我们的系统捕获到任何此错误,因此我们已经有一段时间没有遇到它了。

标签: azure-active-directory microsoft-graph-api


【解决方案1】:

“我也无法在谷歌上找到任何匹配的错误消息。以前有人从 Microsoft Graph API 看到过这个错误吗?”

是的。我正在查询https://graph.microsoft.com/beta/reports/credentialUserRegistrationDetails MS Graph 端点,我看到的和你完全一样。带有状态代码 400 和此错误消息的间歇性响应: “找不到令牌:令牌无效或已过期”,仅在请求访问令牌后一分钟。

我正在使用@odata.nextLink 值来翻阅结果,但是由于这个问题,它被证明是非常不可靠的。有时我会得到整套结果,有时我只会得到其中的一部分。 即使我在每个 nextLink 请求之间睡眠 5 秒钟,错误仍然出现。

这周开始发生在我身上。在我获得一致的结果之前。

您执行重试的方法可能是目前最好的方法:

if response.status_code == 400:
  retry_request()

【讨论】:

    【解决方案2】:

    这似乎是一个错误。根据this bug ticket 的说法,某些情况下可能会比记录的 20 限制产生更高的计数。您可能想尝试限制自己,以便以较慢的速度发送请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      相关资源
      最近更新 更多