在调用WooCommerce API时克服HTTP基本身份验证

时间:2017-11-18 17:44:36

标签: php wordpress api woocommerce

我正在尝试调用WooCommerce / Wordpress API,但我尝试访问的在线商店已打开HTTP Basic Autj。这意味着,我需要进行一次身份验证以克服HTTP身份验证,然后我需要使用api密钥进行第二次身份验证才能使用api。是否有可能在克服两级身份验证的同时进行api呼叫?

问题是,如果我尝试进行身份验证,请使用以下代码:

$headers = array('Accept' => 'application/json');
$options = array('auth' => array($username, $password));
$request = Requests::get("$url/$api/$model", $headers, $options);

然后我从api得到一个401(unathorised)响应,因为我没有在我的请求中发送api令牌。但是如果我使用api令牌和秘密而不是用户名和密码,我甚至不会接近api,因为我没有克服http基本身份验证。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

从外观上看,由于HTTP Basic Auth,您在调用网站时遇到问题。

https://your.site上进行身份验证时,您可以连接到https://your.site并输入foo作为用户,bar作为密码,或者您可以连接到{ {1}}。

希望我帮忙!

答案 1 :(得分:0)

由于我没有代表,我无法对您的问题发表评论进行澄清。所以这里有一个答案!

我认为答案是您不会在一次通话中克服两级身份验证。您可能会首先使用您的用户名和密码与服务器联系以获取访问令牌。

基本授权通常意味着在初始http请求中,您将标头设置为包含 const MySQL= require('mysql'); const pool = MySQL.createPool({ host : 'localhost', user : 'aUser', password : 'aPWD', database : 'DB', socketPath:'/var/run/mysqld/mysqld.sock' })}; pool.getConnection(function(err, connection) { query = 'SOMETHING'; connection.query(query,function (error, results, fields){ connection.release(); reply(results); }); }); ,然后代替下划线放置一个由字符串64生成的长字母数字字符串,用于编码您的用户名和密码(即我会按照以下方式登录WooCommerce):'Authorization': 'Basic _______________________',并在其间包括冒号。

如果我实际上是base64编码username:password,那就是username:password

所以在设置初始http请求标头时,请包含:

dXNlcm5hbWU6cGFzc3dvcmQK

除了base64编码,您拥有自己的用户名和密码(以冒号分隔!)。

假设这有效,api可能会以某种方式向您返回一个访问令牌。但是如果你按照文档进行操作,你应该能够从这一点上弄明白。

同样,真的不清楚你的问题究竟是什么,但无法评论,所以我拍了一下。祝你好运