Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

156
Views
JS Cómo obtener datos de la cuenta de discordia a través de oauth2

Estoy desarrollando un bot de moderación para discord, estoy tratando de crear un plan pago y, por lo tanto, necesito que los usuarios inicien sesión con su cuenta discord con oauth2 para poder obtener los datos del usuario y saber qué servidor tiene el plan pago, chin. Entonces, por ahora, acabo de crear una URL oauth2 y configuré una redirección para https://bouncerbot.goatcode.it/index.html

luego, después de que el usuario haya iniciado sesión, tengo esta URL: https://bouncerbot.goatcode.it/index.html?code=nZauBH6wT0hxn8g8SsS1OwiDvN35nn&guild_id=872213710150713384&permissions=0 así que ahora quiero datos de usuario (foto de perfil, nombre de usuario, etc.) ¿cómo puedo ¿lo entiendo?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Esta es definitivamente más una pregunta de Oauth2 que una pregunta de Discord. Esta respuesta usará ejemplos de JS usando la biblioteca node-fetch para realizar solicitudes web y asume que está usando un backend express .

Primero, desea que el usuario autorice su cuenta con su ID de cliente y el alcance de identify . Cuando hagan clic en autorizar, se enviarán a su URI de redireccionamiento especificado ( https://example.com/redirect para este ejemplo).

Cuando sean redirigidos, habrá un parámetro GET de code en la URL en la que aterrizan, que debe tomar y enviar a la URL del token de Discord para obtener un token de acceso:

 app.get('/redirect', async function (req, res) { // Check their GET params to get the code var code = req.query.code; // Make our POST body var body = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': 'https://example.com/redirect', }; // POST that to Discord var site = await fetch("https://discord.com/api/v9/oauth2/token", { method: 'POST', body: JSON.stringify(body), headers: {'Content-Type': 'application/x-www-form-urlencoded'}, }); // And parse the response var response = await site.json(); var accessToken = response['access_token']; res.send(`Access token: ${accessToken}`); })

Usando el token de acceso proporcionado en la respuesta de Discord, puede realizar una solicitud GET para obtener el usuario actual , usando un encabezado de Authorization de Bearer XXXXX (donde XXXXX es su token de acceso):

 var site = await fetch("https://discord.com/api/v9/users/@me", { method: 'GET', headers: {'Authorization': `Bearer ${accessToken}`} }); var response = await site.json(); var username = response.username;

Sin saber más sobre qué bibliotecas está utilizando, no puedo proporcionarle específicamente lo que necesitará para estas cosas, pero esa es una lista decente de ejemplos y los procesos que deberá seguir para obtener la información que desea.

about 4 years ago · Juan Pablo Isaza Report

0

Tengo un archivo similar que puede seguir.

 import { CLIENT_ID, CLINET_SECRET, AUTHORIZATION_URL, REDIRECT_URL } from '../config/keys'; import React, { useEffect } from 'react'; import axios from 'axios'; const Auth = (props) => { const getUserGuilds = async (accessToken) => { // console.log(`Guild ${accessToken.data.token_type} ${accessToken.data.access_token}`); try { const response = await axios.get('https://discord.com/api/users/@me/guilds', { headers: { authorization: `${accessToken.data.token_type} ${accessToken.data.access_token}` } }); // console.log(response.data); return response.data; } catch (error) { console.log(error); } } const getUserInfo = async (accessToken) => { // console.log(accessToken); // console.log(`User ${accessToken.data.token_type} ${accessToken.data.access_token}`); try { const response = await axios.get('https://discord.com/api/users/@me', { headers: { authorization: `${accessToken.data.token_type} ${accessToken.data.access_token}` } }); // console.log(response.data); return response.data; } catch (error) { console.log(error); } } const getToken = async (code) => { try { const options = new URLSearchParams({ client_id: CLIENT_ID, client_secret: CLINET_SECRET, code, grant_type: 'authorization_code', redirect_uri: REDIRECT_URL, scope: 'identify guilds', }); const result = await axios.post('https://discord.com/api/oauth2/token', options); return result; } catch (error) { console.log(error); } } const getInfo = async (code) => { const accessToken = await getToken(code); const userInfo = await getUserInfo(accessToken); const guildInfo = await getUserGuilds(accessToken); console.log({ userInfo, guildInfo }); } useEffect(() => { const urlSearchParams = new URLSearchParams(window.location.search); const params = Object.fromEntries(urlSearchParams.entries()); // console.log(params); if (!params.code) return; getInfo(params.code); }); return ( <div className="Auth"> <br /> <a className="btn" href={AUTHORIZATION_URL} >Login with discord</a> </div> ) } export default Auth;
about 4 years ago · Juan Pablo Isaza Report

0

Según tengo entendido, lo más probable es que quiera hacer un sistema de inicio de sesión y quieras hacerlo con discord, puedes consultar este recurso. https://www.youtube.com/watch?v=tSS8VKwwjp0

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!