{"record":{"id":"af3c51baf0b553af","repo":"tinyhumansai/openhuman","slug":"meta-is-temporarily-rate-limiting-name-sign-in","errorCode":null,"errorMessage":"Meta is temporarily rate-limiting {name} sign-in (HTTP 429). Wait a few minutes before retrying and avoid clicking Connect repeatedly.{account_hint}","messagePattern":"Meta is temporarily rate-limiting (.+?) sign-in \\(HTTP 429\\)\\. Wait a few minutes before retrying and avoid clicking Connect repeatedly\\.(.+?)","errorType":"http","errorClass":null,"httpStatus":429,"severity":"error","filePath":"src/openhuman/integrations/composio/oauth_handoff.rs","lineNumber":72,"sourceCode":"    let name = toolkit.trim();\n    let account_hint = if name.eq_ignore_ascii_case(\"instagram\") {\n        \" Use an Instagram Business or Creator account — personal accounts are not supported.\"\n    } else if name.eq_ignore_ascii_case(\"facebook\") {\n        \" Confirm the Facebook account has access to the relevant Page or Business Manager.\"\n    } else {\n        \"\"\n    };\n    format!(\n        \"Meta is temporarily rate-limiting {name} sign-in (HTTP 429). Wait a few \\\n         minutes before retrying and avoid clicking Connect repeatedly.{account_hint}\"\n    )\n}\n\n/// If `err` is a Meta-toolkit authorize rate limit, replace it with guidance.\npub fn wrap_authorize_rate_limit_error(toolkit: &str, err: anyhow::Error) -> anyhow::Error {\n    let rendered = format!(\"{err:#}\");\n    if is_meta_oauth_toolkit(toolkit) && is_authorize_rate_limited(&rendered) {\n        anyhow::anyhow!(\"{}\", meta_oauth_rate_limit_message(toolkit))\n    } else {\n        err\n    }\n}\n\n/// Remove non-active connection rows for `toolkit` so a fresh OAuth handoff does\n/// not accumulate Meta sessions (#1952).\npub async fn clear_non_active_connections(\n    client: &ComposioClient,\n    toolkit: &str,\n) -> anyhow::Result<u32> {\n    if !is_meta_oauth_toolkit(toolkit) {\n        return Ok(0);\n    }\n    let toolkit_key = toolkit.trim().to_ascii_lowercase();\n    let resp = client.list_connections().await?;\n    let mut cleared = 0u32;\n    for conn in resp.connections {","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/integrations/composio/oauth_handoff.rs#L54-L90","documentation":"wrap_authorize_rate_limit_error's rewritten message for Meta-toolkit (Instagram/Facebook/WhatsApp) OAuth authorization when Composio reports HTTP 429: Meta is throttling sign-in attempts. Account-type hints are appended for instagram/facebook because personal accounts are a common secondary cause.","triggerScenarios":"Thrown at src/openhuman/integrations/composio/oauth_handoff.rs:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait several minutes before retrying; do not click Connect repeatedly (each click consumes rate-limit budget)","For Instagram, use a Business or Creator account","For Facebook, confirm the account has access to the relevant Page or Business Manager"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}