You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取process.stdout.write(d)参数d中存储的access token明文值

解决方法
  • 你拿到的d是Node.js的Buffer类型,且HTTP响应的data事件会多次触发,每次返回的都是当前分片的部分数据,必须先把所有分片完整拼接后再做解析才能拿到完整内容
  • Zuora的/oauth/token接口返回标准JSON格式,拼接为完整字符串后需要反序列化为JS对象,才能直接提取access_token字段

修改后的可正常获取令牌的代码如下:

const https = require('https');
const querystring = require('querystring');

const auth = () => {
    const data = querystring.stringify({
        grant_type: 'client_credentials',
        client_id: 'x', // 替换为你的实际client_id
        client_secret: 'x', // 替换为你的实际client_secret
    })
    const options = {
        port: 443,
        host: 'rest.sandbox.eu.zuora.com',
        path: '/oauth/token',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': data.length
        },
        method: 'POST',
    };
    const req = https.request(options, (res) => {
        // 定义变量存储完整响应内容
        let resData = '';
        res.on('data', (d) => {
            // 把当前Buffer分片转成utf8字符串拼接
            resData += d.toString('utf8');
        }).on('end', () => {
            try {
                // 反序列化JSON为JS对象
                const tokenInfo = JSON.parse(resData);
                // 直接提取access_token
                const accessToken = tokenInfo.access_token;
                console.log('获取到的access_token:', accessToken);
                // 此处可编写后续使用令牌的业务逻辑
            } catch (err) {
                console.error('响应解析失败:', err, '原始响应内容:', resData);
            }
        });
        // 监听响应层错误
        res.on('error', (err) => {
            console.error('响应错误:', err);
        })
    })
    req.write(data)
    // 监听请求层错误
    req.on('error', (err) => {
        console.error('请求发送失败:', err);
    })
    req.end()
}
auth()

之前单独调用toString()无法拿到明文的核心原因是只处理了单个分片的Buffer,没有等所有响应数据返回完整就做了操作,等全部内容拼接完成后再处理即可正常拿到明文。

内容的提问来源于stack exchange,提问作者Hulubina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:06:03