mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
The signed-state callbacks (Oura, Polar, Strava) claimed the state before the session, code and issuer checks. A denied consent comes back without a code, so it spent the claim on a `nocode` error page, and allowing on the same authorize URL afterwards never exchanged the valid code: the browser was sent to the stored error page instead. Every check that refuses a callback without touching the code now runs first; the claim still sits strictly before the exchange. Expired claims were swept only when a callback completed, so a quiet instance kept its last rows. The daily OAuth-state cleanup at 03:20 now sweeps them as well.