35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# Common Issues
|
||
|
||
Quick diagnostics for Zoom Webhooks integrations.
|
||
|
||
## Signature Verification Fails (401 / "Invalid signature")
|
||
|
||
**Common causes**:
|
||
- You are computing the HMAC over a **re-serialized** body (different whitespace/key order).
|
||
- You are using the wrong secret (webhook secret vs OAuth secret).
|
||
- You are not including the `v0:{timestamp}:{body}` prefix exactly.
|
||
|
||
**Fix**:
|
||
- Verify signatures using the exact raw request body bytes (capture raw body before JSON parsing).
|
||
- Validate both `x-zm-signature` and `x-zm-request-timestamp` and reject stale timestamps (replay protection).
|
||
|
||
See: [verification.md](../references/verification.md)
|
||
|
||
## Timeouts / Retries / Duplicate Events
|
||
|
||
**Symptom**: Zoom retries delivery, you process the same event multiple times.
|
||
|
||
**Fix**:
|
||
- Respond fast (acknowledge ASAP, then enqueue work).
|
||
- Make handlers idempotent (dedupe by event ID/timestamp + payload identifiers).
|
||
|
||
## URL Validation Fails
|
||
|
||
**Symptom**: You can’t enable the webhook endpoint in Marketplace; validation fails.
|
||
|
||
**Fix**:
|
||
- Implement `endpoint.url_validation` response correctly (plainToken + encryptedToken).
|
||
|
||
See: [verification.md](../references/verification.md)
|
||
|