{
  "id": 8781663,
  "title": "invalid_grant: my service account was fine. My laptop's clock was three days slow.",
  "url": "https://urgent.news/2026/09/20/invalid-grant-my-service-account-was-fine-my-laptops-clock-was-three",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-20T21:50:41.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/hammad4june1999/invalidgrant-my-service-account-was-fine-my-laptops-clock-was-three-days-slow-11hm"
  },
  "original_language": "en",
  "account": "In the SEO round email, a digest highlighted an issue with Search Console: it could not be read today. The error detailed was an invalid_grant, which occurs when a credential is incorrect. The reporter, after six days of cleaning a compromised hosting account, realized that the issue was not with the service account but with the clock on their laptop. The laptop's clock was three days slow. Upon checking the server's time, it was revealed that the token had been issued three days ago and had expired two days and twenty-three hours ago. This discrepancy led to the token being rejected by Google. The reporter's client, responsible for building the assertion, overlooked the clock issue. The error message provided a precise description of the fault, but the reporter initially read it as an authorization error rather than a time-related issue. Upon further inspection, the reporter discovered that only the check with a stopwatch failed, while other checks were successful. To avoid such issues in the future, the reporter advises comparing the clock to the server's time before troubleshooting the credential. The report also emphasized the importance of examining the token itself, as the code may appear correct, but the token reveals the actual issue.",
  "summary": "My daily SEO round emails me one digest. This morning it led with this: NEEDS YOU — 5 thing(s) * Search Console could not be read today. ... SEARCH CONSOLE — COULD NOT READ Token request failed (HTTP 400): {\"error\":\"invalid_grant\", \"error_description\":\"Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim.\"}…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}