Conclui o login com o código da verificação em duas etapas
POST/api/auth/login/two-factor
- Auth
- Public
- Clé d’API:
- Clé d’API non acceptée
- X-CommunityId
X-CommunityIdEnvoyez le X-CommunityId de la communauté où l’opération a lieu.
Segundo passo do login quando `POST /api/auth/login` respondeu `twoFactorRequired: true`. Mande o `challengeId` com o `code` (6 dígitos, WhatsApp ou SMS) **ou** um `recoveryCode` (um dos 10 códigos de recuperação, que deixa de valer e dispara o e-mail de alerta). A resposta é a mesma do login (`member`, `token`, `mustChangePassword`), mais `deviceToken` quando `rememberDevice: true` (guarde no navegador e mande no próximo `POST /api/auth/login`: por 90 dias o código não é pedido) e, depois de um código de recuperação, `recoveryCodeUsed` e `recoveryCodesRemaining`.
Código errado: **400** `param = code` com as tentativas restantes (`data.attemptsLeft`, 5 por código); sem tentativas, peça outro (`/resend`). O desafio vale 15 minutos e aceita 10 erros no total; depois, **400** `param = challengeId` (`TWO_FACTOR_CHALLENGE_INVALID`): faça o login de novo. Público; 60 chamadas por IP em 15 minutos (429).
En-têtes
| Nom | Type | Description |
|---|---|---|
X-CommunityIdfacultatif | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Corps de la requête application/json
| Nom | Type | Description |
|---|---|---|
challengeIdobligatoire | string | |
codefacultatif | string | |
recoveryCodefacultatif | string | |
rememberDevicefacultatif | boolean |
Réponses
| Statut | Description |
|---|---|
200 | Login concluído (mesma forma do `POST /api/auth/login`). |
400 | Requisição inválida — falha de validação. |
429 | Tentativas demais. O header `Retry-After` diz em quantos segundos tentar de novo. |
Exemple curl
curl -X POST "https://api.memberfy.net/api/auth/login/two-factor" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"challengeId":"q3V0bWJmZXhhbXBsZS1jaGFsbGVuZ2UtaWQtZm9yLWRvY3M"}'