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.

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
- Abre tu skill en la consola de Alexa y selecciona Account Linking.
- Activa la opción para permitir que los usuarios creen o conecten una cuenta.
- Selecciona Authorization Code Grant.
- 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
- Configura los Redirect URLs que Alexa proporciona y asegúrate de que estén permitidos en tu servidor OAuth.
- Guarda los cambios y publica tu skill para pruebas.
3. Flujo para el usuario
- El usuario dice: “Alexa, conecta mi cuenta de [nombre del skill]”.
- Alexa abre la app y muestra un formulario seguro de login.
- El usuario ingresa su email y contraseña en tu servidor OAuth.
- Tu servidor valida los datos y devuelve un Authorization Code a Alexa.
- Alexa intercambia el código en el Token Endpoint y recibe un Access Token.
- 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.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.