Woocommerce用令牌休息api auth

问题描述 投票:1回答:1

我正在构建一个自定义应用程序来发布前端产品。问题是,我可以使用给我一个令牌的JWT Auth插件来记录用户。但我不能使用这个来创建产品..唯一有效的是使用用户名和密码的基本身份验证。但我不想传递请求的密码。

当我尝试与邮差Bearer auth token,POST与/wp-json/wc/v2/products,我收到此错误:woocommerce_rest_cannot_create

这样做的方法?

json woocommerce woocommerce-rest-api
1个回答
2
投票

由于多种原因可能会出现此错误,首先不要使用postman oAuth1.0而是使用基本的authintication。尝试使用您的使用者密钥替换用户名和密码。

**修改.htaccess以使Basic auth工作,

粘贴这个:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

第二个原因,缺少变量与发布/卷曲/获取您的网址或不填写其余API的要求。这里有一些技巧可以帮助解决这个问题。

OAuth提示OAuth参数可以作为查询字符串参数添加或包含在Authorization标头中。

请注意,在WordPress中没有可靠的跨平台方式来获取原始请求标头,因此在某些情况下查询字符串应该更可靠。必需参数是:oauth_consumer_key,oauth_timestamp,oauth_nonce,oauth_signature和oauth_signature_method。 oauth_version不是必需的,应该省略。

OAuth随机数可以是任意随机生成的32个字符(推荐)字符串,该字符串对于使用者密钥是唯一的。阅读有关在Twitter REST API论坛上生成nonce的更多建议。

OAuth时间戳应该是请求时的unix时间戳。 REST API将拒绝任何包含15分钟窗口之外的时间戳的请求,以防止重放攻击。

在形成用于签名的基本字符串时,必须使用索引提供的商店URL,因为这是服务器将使用的。 (例如,如果商店URL包含www子域,则应将其用于请求)

您可以使用LinkedIn的OAuth测试控制台测试生成的签名 - 将成员令牌/机密留空。

Twitter有关于使用OAuth 1.0a生成签名的很好说明,但请记住,此实现不使用令牌。

请注意,请求正文未按照OAuth规范进行签名,请参阅Google的OAuth 1.0扩展,了解原因。

如果在您的请求中包含参数,如果您可以按字母顺序订购商品,则可以省去很多麻烦。启动WooCommerce 3.0支持授权标头。

请注意,对于当前版本的WordPress,使用json_url_prefix过滤器不再有效。

在WordPress 4.7(并使用核心的REST API而不是插件),这是您需要做的更改API前缀。

add_filter( 'rest_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { return 'api'; }

如果这不能立即起作用,则需要刷新重写规则。你可以运行这段代码一次(不要把它留在你的代码中,以便它每次都运行)

flush_rewrite_rules(true);
© www.soinside.com 2019 - 2024. All rights reserved.