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

首次用Node.js连接WooCommerce REST API遇401权限错误求助

Node.js调用WooCommerce REST API返回401错误(Postman可正常请求)

我首次尝试用Node.js获取WordPress WooCommerce的订单数据,遵循官方REST API JS库文档实现,但本地localhost:5000服务无法获取数据,Postman却能正常返回结果。返回的错误信息如下:

code: 'woocommerce_rest_cannot_view'
message: 'Sorry, you cannot view this resource.'
data: { status: 401 }

我的代码实现

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
const mysql = require("mysql2");
const WooCommerceRestApi = require("@woocommerce/woocommerce-rest-api").default;

const api = new WooCommerceRestApi({
  url: "https://fasbazar.com",
  consumerKey: "ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  consumerSecret: "cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  version: "wc/v3"
});

app.use(cors());
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true }));

const db = mysql.createPool({
  host: "localhost",
  user: "root",
  password: "",
  database: "restapi"
});

// 获取订单
api
  .get("orders/1", {
    per_page: 20 // 每页20条数据
  })
  .then(response => {
    // 请求成功
    console.log("Response Status:", response.status);
    console.log("Response Headers:", response.headers);
    console.log("Response Data:", response.data);
    console.log("总页数:", response.headers["x-wp-totalpages"]);
    console.log("总条目数:", response.headers["x-wp-total"]);
  })
  .catch(error => {
    // 请求失败(4xx/5xx状态码)
    console.log("Response Status:", error.response.status);
    console.log("Response Headers:", error.response.headers);
    console.log("Response Data:", error.response.data);
  })
  .finally(() => {
    // 始终执行
  });

  
app.listen(5000, () => {
  console.log("Server is running on port 5000");
});

输出结果截图

错误输出截图


问题排查与解决办法

  • 核对密钥准确性:仔细检查代码中consumerKey和consumerSecret的字符,确保和WooCommerce后台生成的完全一致,无多余空格或遗漏字符;同时确认密钥拥有read_orders权限(生成密钥时需勾选对应权限)。
  • 修正请求路径:API调用的路径需以斜杠开头,将get("orders/1")改为get("/orders/1"),匹配官方API的路径规范。
  • 临时关闭SSL验证(仅测试用):本地Node环境可能存在SSL证书验证问题,可在API初始化时添加verifySsl: false参数(生产环境请勿使用):
    const api = new WooCommerceRestApi({
      url: "https://fasbazar.com",
      consumerKey: "ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      consumerSecret: "cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      version: "wc/v3",
      verifySsl: false
    });
    
  • 确认订单权限与存在性:确保/orders/1对应的订单真实存在,且密钥关联的WordPress用户有权限查看该订单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:48:21