Configurar Account Linking en un skill de Alexa

Tiempo de lectura: 2 minutos

Auccount Linking nos permite que nuestra Skill pueda autenticarse usando la APP de Alexa y dotando a nuestra Skill de autenticación frente a nuestro servidor backend.

Invierno, pexels

1. Preparar tu servidor con OAuth 2.0

Tu servicio debe soportar OAuth 2.0 para permitir que Alexa pueda autenticar usuarios.

Authorization Endpoint

  • URL donde el usuario ingresa email y contraseña
  • Debe aceptar parámetros:
    • client_id
    • response_type=code
    • redirect_uri
    • scope
  • Ejemplo: https://tuapi.com/oauth/authorize

Token Endpoint

  • URL donde Alexa intercambia el código por un token
  • Debe aceptar parámetros:
    • grant_type=authorization_code
    • code (recibido del endpoint de autorización)
    • redirect_uri
    • client_id y client_secret
  • Debe responder con JSON:
{
  "access_token": "TOKEN_DEL_USUARIO",
  "refresh_token": "TOKEN_PARA_REFRESCAR",
  "token_type": "Bearer",
  "expires_in": 3600
}

2. Configurar Account Linking en Alexa Developer Console

  1. Abre tu skill en la consola de Alexa y selecciona Account Linking.
  2. Activa la opción para permitir que los usuarios creen o conecten una cuenta.
  3. Selecciona Authorization Code Grant.
  4. Configura los campos:
    • Authorization URI: tu endpoint de autorización
    • Access Token URI: tu endpoint de token
    • Client ID: el ID de tu app OAuth
    • Client Secret: el secreto de tu app OAuth
    • Scopes: permisos que tu skill necesita, por ejemplo read_profile
  5. Configura los Redirect URLs que Alexa proporciona y asegúrate de que estén permitidos en tu servidor OAuth.
  6. Guarda los cambios y publica tu skill para pruebas.

3. Flujo para el usuario

  1. El usuario dice: “Alexa, conecta mi cuenta de [nombre del skill]”.
  2. Alexa abre la app y muestra un formulario seguro de login.
  3. El usuario ingresa su email y contraseña en tu servidor OAuth.
  4. Tu servidor valida los datos y devuelve un Authorization Code a Alexa.
  5. Alexa intercambia el código en el Token Endpoint y recibe un Access Token.
  6. Tu skill puede usar este token para realizar llamadas a tu API en nombre del usuario.

4. Usar el Access Token en tu skill

En tu Lambda o backend, obtienes el token así:

const accessToken = handlerInput.requestEnvelope.context.System.user.accessToken;

Luego puedes usarlo para llamar a tu API:

const response = await fetch('https://tuapi.com/data', {
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

5. Recomendaciones

  • No pidas el email y contraseña directamente por voz.
  • Usa el refresh token para obtener nuevos access tokens automáticamente.
  • Mantén el secreto de tu app seguro y nunca lo expongas en el código del skill.

Deja un comentario