3

我已经生成了消费者密钥和消费者密钥。该网站已安装SSL。我还安装了JSON和REST服务所需的插件。这是URL看起来的样子:WooCommerce - woocommerce_rest_cannot_view - 状态401

https://<url>/wp-json/wc/v1/products 

当我试图通过邮递员,一个浏览器插件来获得(GET)使用基本认证产品的细节,我得到这样的JSON响应:

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

我有对应于使用者密钥的READ和WRITE权限。

回答

6

我遇到了同样的问题。

这是我如何解决这个问题:

require "woocommerce_api" 

woocommerce = WooCommerce::API.new(
    "https://example.com", 
    "consumer_key", 
    "consumer_secret", 
    { 
    wp_json: true, 
    version: "wc/v1", 
    query_string_auth: true 
    } 
) 

关键是query_string_auth: true 需要强制基本认证作为HTTPS

1

这是我不再担心,并继续前行下查询字符串如此。

总之,woocommerce休息控制器几乎都有一个SOMEWPRESTCLASS::get_item_permissions_check()方法,该方法又调用wc_rest_check_post_permissions()来决定是否返回该错误;

所以你勾成和验证任何你想要的方式:

add_filter('woocommerce_rest_check_permissions', 'my_woocommerce_rest_check_permissions', 90, 4); 

function my_woocommerce_rest_check_permissions($permission, $context, $object_id, $post_type ){ 
    return true; 
} 
1

试图帮助别人: 我是用401响应挣扎试图卷曲,并与VBA试图请求的内容型“应用/ JSON” 不过,我能够只是在我的浏览器地址栏中输入该拉的有效响应: https://mywebsite.com/wp-json/wc/v2/products?consumer_key=ck_blahblah&consumer_secret=cs_blahblah

按照这一思路,我回到我的VBA的应用程序,并改变了内容类型为“应用程序/文本”和能够回复一个有效的响应文本,其响应码为200. 希望这可以帮助某人。