从 node.js 中的 API 数据中提取值

Posted

技术标签:

【中文标题】从 node.js 中的 API 数据中提取值【英文标题】:Extracting values from API data in node.js 【发布时间】:2021-12-19 23:14:46 【问题描述】:

感谢您的宝贵时间。 我正在尝试在不和谐中使用 OAuth2,但我很难弄清楚如何检索用户名。 谁能告诉我怎么做?

代码

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`));

谢谢

【问题讨论】:

【参考方案1】:

您已经拥有 JSON 数据(来自 await userResult.json()),您可以从对象中获取属性或对其进行解构。

获取财产

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

解构

const  username, id  = await userResult.json()

您可以详细了解可以从Discord documentation 中提取哪些属性

【讨论】:

以上是关于从 node.js 中的 API 数据中提取值的主要内容,如果未能解决你的问题,请参考以下文章

Node.js提取返回空数据

如何在Node.js中从简单的HTTPS请求构造和提取值?

使用 SQLite3 + Node.js 的最佳实践

指向 Node.js 应用程序的多个网站,提取主机名

Node.js 和 JSON:从外部网站 api 检索信息

如何从 Cloud Firestore 数据库中获取 node.js 中的特定字段值?