Home > Back-end >  Extracting values from API data in node.js
Extracting values from API data in node.js

Time:11-06

Thank you for your time. I'm trying to use OAuth2 in discord, but I'm having a hard time figuring out how to retrieve the username. Can someone please tell me how to do it?

code

const fetch = require('node-fetch');
const express = require('express');

const app = express();

app.get('/', async ({ query }, response) => {
    const { code } = query;

    if (code) {
        try {
            const oauthResult = await fetch('https://discord.com/api/oauth2/token', {
                method: 'POST',
                body: new URLSearchParams({
                    client_id: process.env['ci'],
                    client_secret: process.env['cs'],
                    code,
                    grant_type: 'authorization_code',
                    redirect_uri: `https://oauth.aiueominato1111.repl.co`,
                    scope: 'identify',
                }),
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                },
            });

            const oauthData = await oauthResult.json();

            const userResult = await fetch('https://discord.com/api/users/@me', {
                headers: {
                    authorization: `${oauthData.token_type} ${oauthData.access_token}`,
                },
            });
            console.log( await userResult.json());
        } catch (error) {
            // NOTE: An unauthorized token will not throw an error;
            // it will return a 401 Unauthorized response in the try block above
            console.error(error);
        }
    }

    return response.sendFile('index.html', { root: '.' });
});

app.listen(port, () => console.log(`App listening at http://localhost:${port}`));

thank you

CodePudding user response:

You already have the JSON data (from await userResult.json()) with it you can either get the property from the object or destructure it.

Getting property

const user = await userResult.json();
const username = user.username

Destructuring

const { username, id } = await userResult.json()

You can find out more about what properties you can extract from the Discord documentation

  • Related