Login de usuarios

Inicia la sesión de los usuarios desde tu backend cuando no hay SDK para tu stack. Block-Auth le dice a tu backend qué usuario ha iniciado sesión, así tu app nunca se fía de una dirección enviada por el navegador. Para el flujo completo con código, consulta PHP, Python, .NET, Node.js.

  1. Tu backend pide un enlace de login (/api/auth/authorize) y redirige al usuario a él.
  2. El usuario inicia sesión en Block-Auth y vuelve a tu redirectUri con ?code=…&state=….
  3. Tu backend canjea el código (/api/auth/token) y obtiene la dirección y los roles del usuario.

Todos los endpoints de esta página reciben tu apiKey y el hash SHA-256 de tu apiSecret en el cuerpo. No necesitan token de acceso. Las respuestas y errores siguen el formato común; tras 10 peticiones con credenciales incorrectas en un minuto, tu IP recibe 429 Too many requests.


POST/api/auth/authorize

Devuelve la URL de la página de login de Block-Auth para tu app. Redirige al usuario a ella: el enlace debe abrirse en menos de 5 minutos, y después el usuario tiene 15 minutos para iniciar sesión.

Cuerpo

  • Name
    apiKey
    Type
    string
    Description

    La API key de tu app.

  • Name
    apiSecret
    Type
    string
    Description

    Hash SHA-256 (hex) de tu API secret.

  • Name
    redirectUri
    Type
    string
    Description

    A dónde devuelve Block-Auth al usuario. Debe ser una URL https en el dominio validado de tu app (por ejemplo https://your-app.com/blockauth/callback). Vale cualquier ruta de ese host.

  • Name
    state
    Type
    string
    Description

    Un valor aleatorio (hasta 512 caracteres) que guardas en la sesión del usuario. Block-Auth lo devuelve junto con el código; comprueba que coincide para proteger tu callback frente a CSRF.

Petición

POST
/api/auth/authorize
curl -X POST \
  https://wss.block-auth.io/api/auth/authorize \
  -H 'Content-Type: application/json' \
  -d '{
  "apiKey": "your_api_key",
  "apiSecret": "sha256_of_api_secret",
  "redirectUri": "https://example.com/callback",
  "state": "random_value_in_session"
}'

Respuesta

{
  "success": true,
  "message": {
    "url": "https://auth.block-auth.io/?t=…",
    "expiresAt": "2026-10-22T12:05:00.000Z"
  }
}

POST/api/auth/token

Canjear el código

Canjea el code que ha recibido tu callback por el usuario que ha iniciado sesión. El código es válido durante 60 segundos y solo se puede canjear una vez, así que canjéalo en cuanto lo reciba el callback.

Comprueba el state antes de llamar a este endpoint. La address de la respuesta es la identidad del usuario en tu app: úsala para crear tu propia sesión.

Cuerpo

  • Name
    apiKey
    Type
    string
    Description

    La API key de tu app.

  • Name
    apiSecret
    Type
    string
    Description

    Hash SHA-256 (hex) de tu API secret.

  • Name
    code
    Type
    string
    Description

    El parámetro code de la query de tu callback.

  • Name
    redirectUri
    Type
    string
    Description

    La misma redirectUri que enviaste a /api/auth/authorize.

  • Name
    codeVerifier
    Type
    string
    Description

    Solo cuando el código viene del widget: el codeVerifier que envía a tu backend junto con el código.

  • Name
    linkExternalId
    Type
    string
    Description

    Opcional. Tu propio ID del usuario con sesión, para vincular su cuenta con esta identidad de Block-Auth. Hasta 255 caracteres: letras, dígitos y . _ : | -.

Respuesta

  • Name
    address
    Type
    string
    Description

    La dirección del usuario. Mismo valor que did.

  • Name
    signedAt
    Type
    string
    Description

    Cuándo inició sesión el usuario en tu app, en UTC con el formato YYYY-MM-DD HH:mm:ss.

  • Name
    signedExpiredAt
    Type
    string
    Description

    Cuándo caduca esa firma, en el mismo formato. Tu sesión no debería durar más.

  • Name
    roles
    Type
    array
    Description

    Los roles del usuario en tu app, como { slug, name }.

  • Name
    externalId
    Type
    string
    Description

    Tu propio ID de este usuario si su cuenta está vinculada, o null.

Petición

POST
/api/auth/token
curl -X POST \
  https://wss.block-auth.io/api/auth/token \
  -H 'Content-Type: application/json' \
  -d '{
  "apiKey": "your_api_key",
  "apiSecret": "sha256_of_api_secret",
  "code": "code_from_your_callback",
  "redirectUri": "https://example.com/callback"
}'

Respuesta

{
  "success": true,
  "message": {
    "address": "0x7F85…46D8",
    "did": "0x7F85…46D8",
    "signedNonce": 3,
    "signedAt": "2026-10-22 11:58:41",
    "signedExpiredAt": "2026-10-22 12:58:41",
    "roles": [
      { "slug": "acme-x7k2p9", "name": "Admin" }
    ],
    "externalId": null
  }
}

POST/api/auth/signout

Cerrar la sesión del usuario

Llámalo cuando el usuario cierre sesión en tu app. Cierra las sesiones de Block-Auth del usuario para tu app en todos sus dispositivos, de modo que el próximo login vuelva a pedir autorización.

Una dirección desconocida responde igual que una conocida sin sesiones abiertas: closed: 0.

Cuerpo

  • Name
    apiKey
    Type
    string
    Description

    La API key de tu app.

  • Name
    apiSecret
    Type
    string
    Description

    Hash SHA-256 (hex) de tu API secret.

  • Name
    address
    Type
    string
    Description

    La address que obtuviste de /api/auth/token.

Petición

POST
/api/auth/signout
curl -X POST \
  https://wss.block-auth.io/api/auth/signout \
  -H 'Content-Type: application/json' \
  -d '{
  "apiKey": "your_api_key",
  "apiSecret": "sha256_of_api_secret",
  "address": "0x7F85…46D8"
}'

Respuesta

{
  "success": true,
  "message": {
    "closed": 1
  }
}

POST/api/auth/link/revoke

Solo si usas la vinculación de cuentas: elimina el vínculo entre uno de tus usuarios y su identidad de Block-Auth, por ejemplo cuando el usuario borra su cuenta en tu app. La próxima vez que inicie sesión con Block-Auth tendrá que vincularla de nuevo.

revoked es false cuando ese usuario no tenía ningún vínculo activo.

Cuerpo

  • Name
    apiKey
    Type
    string
    Description

    La API key de tu app.

  • Name
    apiSecret
    Type
    string
    Description

    Hash SHA-256 (hex) de tu API secret.

  • Name
    externalId
    Type
    string
    Description

    Tu propio ID del usuario, el que usaste al vincular. Hasta 255 caracteres: letras, dígitos y . _ : | -.

Petición

POST
/api/auth/link/revoke
curl -X POST \
  https://wss.block-auth.io/api/auth/link/revoke \
  -H 'Content-Type: application/json' \
  -d '{
  "apiKey": "your_api_key",
  "apiSecret": "sha256_of_api_secret",
  "externalId": "user-1234"
}'

Respuesta

{
  "success": true,
  "message": {
    "revoked": true
  }
}