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

如何用Node.js获取Client Credentials类型的access_token?

你的Node.js获取access_token代码问题修正

你的代码里存在几处语法和逻辑错误,我帮你逐一修正并说明:

问题点梳理

  • 函数名拼写错误:genrateAccessToken 少了字母e,应该改为generateAccessToken
  • axios请求语法错误:axios.post的URL和配置对象之间缺了逗号;axios里用data字段传请求体(不是body),请求头字段是headers(复数,不是header)
  • grant_type值未加引号:client_credentials是字符串常量,必须用引号包裹,否则会被当作变量导致报错
  • 未等待axios请求完成:async函数里调用axios.post必须加await,不然会直接返回空Promise,拿不到响应数据
  • response变量未定义:需要接收axios返回的响应对象才能获取data
  • 控制台日志缺失端口号:app.listen里的输出没写具体端口
  • 缺少错误处理:请求可能失败,需要捕获异常避免程序崩溃

修正后的完整代码

const express = require("express");
const axios = require("axios");

const app = express();

app.get("/test", async (req, res) => {
  try {
    const data = await generateAccessToken();
    console.log(data);
    res.json(data);
  } catch (error) {
    console.error("获取access_token失败:", error.message);
    res.status(500).json({ error: "获取令牌失败" });
  }
});

async function generateAccessToken() {
  const response = await axios.post(
    "https://authentification-candidat.pole-emploi.fr/connexion/oauth2/access_token",
    {
      grant_type: "client_credentials",
      client_id: '你的Client_ID',
      client_secret: '你的Client_Secret',
      scope: 'api_labonneboitev1'
    },
    {
      headers: {
        'Content-Type': "application/x-www-form-urlencoded"
      }
    }
  );
  return response.data;
}

app.listen(5000, () => {
  console.log(`App listening on port 5000`)
});

额外说明

因为接口要求Content-Type为application/x-www-form-urlencoded,axios会自动把对象格式的请求体转换成表单格式提交,无需手动处理。如果后续遇到提交格式问题,也可以用qs.stringify()手动序列化数据,但默认处理基本能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:35:25