{"record":{"id":"00cd8d6f34f5ea49","repo":"zeroclaw-labs/zeroclaw","slug":"google-oauth-refresh-error","errorCode":null,"errorMessage":"Google OAuth refresh error: {} - {}","messagePattern":"Google OAuth refresh error: (.+?) - (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-providers/src/auth/gemini_oauth.rs","lineNumber":180,"sourceCode":"        (\"client_secret\", client_secret),\n    ];\n\n    let response = client\n        .post(GOOGLE_OAUTH_TOKEN_URL)\n        .form(&form)\n        .send()\n        .await\n        .context(\"Failed to send refresh token request\")?;\n\n    let status = response.status();\n    let body = response\n        .text()\n        .await\n        .context(\"Failed to read refresh response body\")?;\n\n    if !status.is_success() {\n        if let Ok(err) = serde_json::from_str::<OAuthErrorResponse>(&body) {\n            anyhow::bail!(\n                \"Google OAuth refresh error: {} - {}\",\n                err.error,\n                err.error_description.unwrap_or_default()\n            );\n        }\n        anyhow::bail!(\"Google OAuth refresh failed ({}): {}\", status, body);\n    }\n\n    let token_response: TokenResponse =\n        serde_json::from_str(&body).context(\"Failed to parse refresh response\")?;\n\n    let expires_at = token_response\n        .expires_in\n        .map(|secs| Utc::now() + chrono::Duration::seconds(secs));\n\n    Ok(TokenSet {\n        access_token: token_response.access_token,\n        refresh_token: token_response.refresh_token,","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-providers/src/auth/gemini_oauth.rs#L162-L198","documentation":"Error \"Google OAuth refresh error: {} - {}\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-providers/src/auth/gemini_oauth.rs:180 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the refresh error code; re-authenticate if the refresh token was revoked."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}