Se supone que obtiene todos los gremios a los que se une un usuario. Obtiene la autenticación del portador correcta, pero siempre falla con el código 401. Cuando se usa una API externa ( https://reqbin.com/ ) con autenticación para probar la discordia API también da el mismo error 401.
Este es el código:
let discordCode = window.location.href let code = discordCode.split("?code=") if(code && code.length > 0){ discordCode = code[code.length-1] } console.log(discordCode) fetch("https://discord.com/api/users/@me/guilds",{method: 'GET',headers: { "Authorization": `Bearer ${discordCode}`, }}).then(function(response) { response.json().then((result) => { console.log(result) }) }) /*fetch(`/discordProxy/${discordCode}`).then(function(response) { response.json().then((result) => { console.log(result) }) })*/ $("#connect_top_button").click(function(){ window.location.href = "https://discord.com/api/oauth2/authorize?client_id=955915443405729844&redirect_uri=http%3A%2F%2F130.162.37.209%2Fservers&response_type=code&scope=identify%20guilds" })Los alcances de oauth2 que le di a la aplicación son: identificación, correo electrónico, gremios
Editar: en realidad, parece que todos los tokens de autenticación de oauth2 no funcionan. Extraño
Debe obtener el token de discordia y usarlo en la autorización:
"Authorization": `Bearer ${await getTokenDiscord()}`aquí está mi ejemplo de obtener el token de discordia:
async getTokenDiscord() { const params = new URLSearchParams() params.append('client_id', CLIENT_ID) params.append('client_secret', CLIENT_SECRET) params.append('grant_type', 'authorization_code') params.append('code', YOUR_DISCORD_CODE) params.append('redirect_uri', REDIRECT_URL) params.append('scope', 'identify') const resp = await fetch('https://discord.com/api/oauth2/token', { method: 'post', body: params, headers: { 'Content-Type': 'application/x-www-form-urlencoded', Accept: 'application/json' } }) return await resp.json() }No es el mejor ejemplo de cómo hacer esto, pero es la forma en que funciona para mí.