Creación de Conexión Personalizada con Discord en Auth0
Clase 7 de 28 • Curso de Auth0: Implementación de Autenticación y Seguridad Web
Resumen
¿Cómo configurar un inicio de sesión personalizado con Discord?
Integrar un inicio de sesión personalizado con Discord puede parecer intimidante al principio, pero en realidad es un proceso bastante accesible. Utilizando Auth0, una plataforma potente para la autenticación, y la API de Discord, puedes permitir que los usuarios se registren y accedan a tu aplicación usando sus cuentas de Discord.
¿Cómo crear una conexión personalizada con Auth0?
Para realizar esta integración, primero necesitas crear una nueva conexión en Auth0:
- Accede al panel de control de Auth0 y dirígete a "Authentication" y luego a "Social".
- Desplázate hacia abajo y selecciona "Create Custom" para una nueva conexión.
- Ingresa un nombre único para la conexión, por ejemplo, "Discordia" dado que el nombre "Discord" ya está tomado.
- Proporciona las siguientes URLs que obtendrás desde Discord:
- Authorization URL
- Token URL
Ambas URLs son cruciales, y se pueden localizar en la documentación de OAuth de Discord.
¿Cómo obtener las credenciales de Discord?
Debes acceder al portal de desarrolladores de Discord:
- Visita discord.com/developers/applications y crea una nueva aplicación.
- Registra el nombre y acepta los términos y condiciones.
- Navega a la sección "OAuth". Aquí, podrás copiar dos piezas importantes de información:
- Client ID
- Client Secret
Estas credenciales son fundamentales para la autenticación en Discord.
¿Qué roles y permisos se deben configurar?
Al trabajar con APIs de autenticación, el concepto de "scopes" es vital. En el caso de Discord, debes configurar los siguientes permisos para obtener la información del usuario:
- Identify: Permite acceder al nombre de usuario y a su identificador.
- Email: Para acceder a la dirección de correo electrónico del usuario.
Verifica siempre los scopes necesarios en la documentación de OAuth del servicio que vayas a integrar.
¿Cómo se implementa el script de Fetch para el perfil de usuario?
Para obtener y manejar los datos de perfil de usuario desde Discord, se requiere un script específico:
const request = require('request');
function FetchDiscordUser(accessToken, context, callback) {
const API_URL = 'https://discord.com/api/v10';
const CDN_URL = 'https://cdn.discordapp.com';
request.get({
url: `${API_URL}/users/@me`,
headers: {
'Authorization': `Bearer ${accessToken}`,
},
}, function(err, response, body) {
if (err || response.statusCode !== 200) {
return callback(new Error('Error al obtener el usuario de Discord'));
}
try {
const jsonResponse = JSON.parse(body);
const profile = {
id: jsonResponse.id,
name: `${jsonResponse.username}#${jsonResponse.discriminator}`,
nickname: jsonResponse.username,
picture: `${CDN_URL}/avatars/${jsonResponse.id}/${jsonResponse.avatar}.png`
};
callback(null, profile);
} catch (e) {
callback(new Error('Error parsing JSON'));
}
});
}
module.exports = FetchDiscordUser;
Este script utiliza la versión más reciente de la API de Discord para asegurar que manejes los datos de usuario correctamente. Instalación de paquetes como request
puede ser necesaria.
¿Qué hacer si la URL de redirección falla?
Es fundamental verificar que la URL de redirección esté configurada correctamente. Esta URL es esencial para completar el flujo de OAuth y debe coincidir con:
- El dominio del tenant de Auth0, por ejemplo:
https://yourtenant.auth0.com/login/callback
.
Asegúrate de guardar los cambios en Discord y vuelve a Auth0 para probar la conexión.
¿Por qué experimentar con otros servicios de OAuth?
Una vez configurado Discord, te animo a que explores otros servicios que implementen OAuth. Creando nuevas conexiones personalizadas con estos servicios en Auth0, mejorarás y ampliarás tu comprensión del flujo de autenticación. ¡Sigue experimentando y aprendiendo sobre este aspecto crucial del desarrollo moderno!