Wordpress-woocommerce Rest api与nodejs第一次连接错误



我第一次尝试使用nodejs获取我的WordPress wooccommerce订单数据,并遵循以下步骤https://github.com/woocommerce/woocommerce-rest-api-js-libwooccommerce文档,但无法在localhost:5000/page上获取数据。数据随poster一起提供,但无法访问localhost页面。

响应数据为:

代码:'woococommerce_rest_cannot_view'
消息:'对不起,您无法查看此资源。'
数据:{状态: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"
});
// List products
api
.get("orders/1", {
per_page: 20 // 20 products per page
})
.then(response => {
// Successful request
console.log("Response Status:", response.status);
console.log("Response Headers:", response.headers);
console.log("Response Data:", response.data);
console.log("Total of pages:", response.headers["x-wp-totalpages"]);
console.log("Total of items:", response.headers["x-wp-total"]);
})
.catch(error => {
// Invalid request, for 4xx and 5xx statuses
console.log("Response Status:", error.response.status);
console.log("Response Headers:", error.response.headers);
console.log("Response Data:", error.response.data);
})
.finally(() => {
// Always executed.
});

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

输出:输出图像

我从你的回复截图中提取了错误(并将其添加到你的问题中,因为这是最相关的信息(:woocommerce_rest_cannot_view(401(

添加queryStringAuth:

const WooCommerce = new WooCommerceRestApi({
url: 'https://example.com',
consumerKey: 'consumer_key',
consumerSecret: 'consumer_secret',
version: 'wc/v3', // Also add the version!
queryStringAuth: true // Force Basic Authentication as query string true and using under HTTPS
});

来源:https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#authentication-通过https(代码示例-Node.js选项卡(

如果这不起作用,请参阅GitHub/woocommerce上的这篇文章。它提供了401问题的疑难解答:https://github.com/woocommerce/woocommerce/wiki/Getting-started-with-the-REST-API#401-未经授权的

它指出:

401未经授权
您的API密钥或签名错误。确保:

  • 您为其生成API密钥的用户实际上可以访问资源
  • 身份验证时的用户名是您的使用者密钥
  • 身份验证时的密码是您的消费者机密
  • 制作一套新的钥匙以确保安全

如果您的服务器使用FastCGI,请检查您的授权标头是否已正确读取。

请确保阅读了完整的文章。

您还可以检查所有现有的Stack Overflow帖子,地址为"woommerce_rest_cannot_view":
https://stackoverflow.com/search?q=woocommerce_rest_cannot_view

最新更新