4

在那里我尝试使用customers来自 woocommerce 的 api,当我尝试使用它时,我总是得到响应:url:http://example.com/wp-json/wc/v1/customers

{
  "code": "woocommerce_rest_cannot_view",
  "message": "Sorry, you cannot list resources.",
  "data": {
    "status": 401
  }
}


{
  "code": "woocommerce_rest_authentication_error",
  "message": "Invalid Signature - provided signature does not match.",
  "data": {
    "status": 401
  }
}

有时:

和创建:

{
  "code": "woocommerce_rest_cannot_create",
  "message": "Sorry, you are not allowed to create resources.",
  "data": {
    "status": 401
  }
}

我应该怎么办 ?

我已经添加了密钥:

这里

或者我只能有 1 把钥匙?: 这里

或者我需要更新其中一个脚本?

希望有人可以帮助我解决我的问题

4

3 回答 3

1

我也遇到了同样的问题,我在 Postman、PHP、NodeJs 中尝试过,几乎花了 2 天时间但没有输出,最后在 URL 末尾加上斜杠后开始得到响应,

我是说,

最初我使用的是https://example.com/wp-json/wc/v3/products?consumer_key=ck_XXXX&consumer_secret=cs_XXXX 但将其更改为像这样https://example.com/wp-json/wc/v3/products /?consumer_key=ck_XXXX&consumer_secret=cs_XXXX(只需在查询字符串开头的问号前加一个斜杠)。

在 Postman 中,即使没有设置任何授权设置(Type = No Auth),我也开始收到回复。

它可能与我的 .htaccess 有某种关系,但我觉得如果我也在这里发布这个解决方案会很好。

于 2021-08-04T07:49:21.893 回答
1

我遇到了这个确切的问题,但是根据我的经验,我有好消息和坏消息,有时当我几乎没有进行任何更改时,API 会将我拒之门外,有时重新启动 NGINX 服务器会解决此问题。

目前,我与邮递员和 OAuth 1.0 的联系产生了以下结果;

{
  "code": "woocommerce_rest_cannot_view",
  "message": "Sorry, you cannot list resources.",
  "data": {
    "status": 401
  }
}

有了我们的方式:

  1. 确保在邮递员中将“类型”设置为 OAuth 1.0。
  2. 确保您的 URL 正确(http 或 https)。

正如我上面所说,我从来没有设法保持我的稳定,它会在没有改变任何东西的情况下退出。

我如何解决这个问题是使用 'Basic Auth', Username your_ck, password your_cs。我相信您需要使用 SSL 才能使用 Basic Auth,但设置 SSL 并不是什么大问题,所以绝对值得。

如果您确实找到了 OAuth 1.0 失败的原因,我很想听听。

编辑:这个问题的例子有很多人的例子,图片可能会对你有所帮助。但似乎大多数人满足于基本身份验证。

于 2016-11-01T11:37:16.600 回答
0

确保您已授予用户读/写访问权限,并检查根目录中的 .htaccess 文件。尝试在 .htaccess 文件中使用此代码

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
于 2020-07-27T10:34:38.850 回答