WordPress插件调用WooCommerce REST API遇401认证错误求助
排查WooCommerce REST API同站调用401认证失败问题
以下是针对该问题的具体排查步骤:
检查Base64编码准确性
确保编码的是consumer_key:consumer_secret的原始拼接字符串,不要添加多余空格、引号或换行符。建议直接在代码中用base64_encode( $consumer_key . ':' . $consumer_secret )生成编码值,避免手动编码出错。同时对比Postman中生成的认证头值,确认两者完全一致。确认请求头格式正确
确保wp_remote_get的请求头参数设置无误,正确示例代码如下:$consumer_key = '你的消费者密钥'; $consumer_secret = '你的消费者密钥密码'; $api_url = 'https://你的站点域名/wp-json/wc/v3/products'; $headers = array( 'Authorization' => 'Basic ' . base64_encode( $consumer_key . ':' . $consumer_secret ) ); $response = wp_remote_get( $api_url, array( 'headers' => $headers ) );注意
Authorization头必须是Basic加上编码值的完整格式,不要拆分字段。排查WordPress权限与插件拦截
- 若代码在未登录用户访问的页面执行,需确认API密钥权限设置为「只读」(或对应产品列表访问权限),同时检查WooCommerce是否允许未登录用户查看产品列表。
- 临时禁用安全类插件(如防火墙、权限管理插件),测试是否是插件拦截了请求。
验证API端点与协议
确保调用的是HTTPS协议的正确端点,比如https://your-site.com/wp-json/wc/v3/products,不要使用HTTP协议。同时对比Postman中的请求URL,确保路径、查询参数完全一致。调试实际发送的请求头
使用wp_remote_retrieve_headers( $response )打印请求返回的响应头,或者开启WordPress调试日志(在wp-config.php中设置WP_DEBUG和WP_DEBUG_LOG为true),查看完整请求详情,确认Authorization头是否被正确传递、是否存在被篡改的情况。
内容的提问来源于stack exchange,提问作者Aman Mohammed
相关产品推荐
相关产品推荐

