在Prestashop 1.7中,我尝试使用prestapyt与网络服务进行互动。
from prestapyt import PrestaShopWebServiceDict
prestashop = PrestaShopWebServiceDict('http:\\hostname.ext\api', 'APIKEY')
ps = prestashop.search('addresses')
我收到此错误
prestapyt.prestapyt.PrestaShopAuthenticationError: 'Unauthorized'
为了尝试了解库中是否有错误,我尝试通过浏览器在API上进行连接。
在http:\ hostname.ext \ api上连接我收到登录请求。
在用户名中插入APIKEY并将密码字段留空as indicated here我再次收到未经授权的错误。
验证仅适用于将APIKEY设置为查询字符串
http:\\hostname.ext\api?&ws_key=APIKEY
但是这种方法在用户会话认证的prestapyt中不可用。
我错过了Prestashop的一些设置或了解这个问题的方法吗?
谢谢
答案 0 :(得分:3)
找到问题并以这种方式解决了这个问题。
问题不在于Prestashop或prestapyt,而是与服务器配置(Apache + PHP)相关。
考虑到在我的情况下我在托管云服务中工作,我没有关于此的深入信息。
但是此配置的结果是Authorization标头未出现在$_SERVER
变量中。这里报告的行为相同:
Why are $_SERVER[“PHP_AUTH_USER”] and $_SERVER[“PHP_AUTH_PW”] not set?
我在Prestashop安装中解决了将此语句添加到.htaccess文件中的问题:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
根据建议here。
我希望能帮助其他遭遇同样问题的Prestashop用户。