我正在尝试调用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基本身份验证。
谢谢你的帮助!
答案 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可能会以某种方式向您返回一个访问令牌。但是如果你按照文档进行操作,你应该能够从这一点上弄明白。
同样,真的不清楚你的问题究竟是什么,但无法评论,所以我拍了一下。祝你好运