Estoy tratando de implementar un inicio de sesión de Discord en mi sitio web. Desafortunadamente estoy recibiendo un error de discord.
¿Alguien ve, lo que está mal con mi código?
FYI: Ya recuperé el código de Discord. Así que mi primera solicitud está funcionando bien.
Lo que quiero hacer con los datos:
Quiero obtener el ID de usuario para poder agregar grupos al usuario en mi servidor Discord.
ERROR:
error: 'unsupported_grant_type', error_description: 'Grant type None is not supported'Código:
router.get('/account-settings/connections/discord/callback', (async (req, res) => { const code = await req.query.code; const creds = btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); fetch(`https://discordapp.com/api/oauth2/token`, { method: "POST", headers: { Authorization: `Basic ${creds}`, }, body: querystring.stringify({ grant_type: 'authorization_code', code: code, redirect_uri: dis_redirect }), }) .then((res) => res.json()) .then((body) => console.log(body)); })¡¡¡Muchas gracias por adelantado!!!
Saludos cordiales, Joshy
Está bien para todos los demás, que tienen este problema. Pude arreglar esto analizando toda la información en el cuerpo y configurando el tipo de contenido en los encabezados. Aquí hay un código de trabajo:
let params = new URLSearchParams(); params.append('client_id', CLIENT_ID); params.append('client_secret', CLIENT_SECRET); params.append('grant_type', 'authorization_code'); params.append('code', code); params.append('redirect_uri', dis_redirect); fetch('https://discord.com/api/oauth2/token', { method: 'post', body: params, headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json' }, }).then(r => r.json()).then(async Response => {En la variable de código, almacené la consulta de solicitud, me estoy volviendo de TwithOauth (después de la autorización del usuario). ID de cliente y secreto de cliente que obtendrá de su aplicación Discord. El virus dis_redirect contiene mi enlace de redirección, que es solo una cadena en blanco de mi enlace, tengo la configuración para obtener el enrutador.
No se necesita nada más.
Obtendrá una respuesta JSON, con la que puede trabajar. Si desea obtener los datos de los usuarios (como yo), el siguiente código es lo que está buscando:
let refresh_token = Response.refresh_token; let accessToken = Response.access_token; var site = await fetch("https://discord.com/api/v9/users/@me", { method: 'GET', headers: {'Authorization': `Bearer ${accessToken}`} }); var response = await site.json(); console.log(response); });Este código lo colocará directamente en la nueva función asíncrona abierta. Ahí tienes. Todos los datos de los usuarios, los necesitarás.
Espero haber podido ayudar a alguien. Si tienes alguna pregunta, ¡solo házmelo saber!
Saludos cordiales, Joshy