Prestashop Web Service API不断要求身份验证

时间:2015-02-26 18:15:28

标签: php api authentication get prestashop

我遇到这个问题我从prestashop启用了web服务,如果直接从post方法传递参数,我可以访问它 http://underwearstudio.mx/pruebas/api?&ws_key= “的myKey”。

但如果我尝试访问而不传递ws_key作为参数,它会一直要求我进行身份验证。

根据我在提示身份验证时所阅读的内容,您需要使用API​​密钥作为用户名并保留空密码,但它只是不断提示身份验证。

我该怎么办?

我试图按照本教程。(http://doc.prestashop.com/display/PS15/Chapter+2+-+Discovery+-+Testing+access+to+the+web+service+with+the+browser

非常感谢任何帮助

5 个答案:

答案 0 :(得分:12)

对于像我这样的谷歌:

与当前版本1.6.1.1一样,需要在url的末尾添加此代码[?&ws_key=YourSecretKey]并使用此方法访问webservice,作为用户名传递(在文档中说明) )不起作用

 http://[YourPrestaShopUrl]/api?&ws_key=YourSecretKey
 eg: http://192.168.1.148/api/products?limit=5&ws_key=EUQ1J6NT1KVJ1S9SYGRCLGQE8IJU66DA

要使用the webservice library完成此操作,您可以添加以下行:

$url .= '&ws_key=' . $this->key;

在第116行(当前版本),在

 protected function executeRequest($url, $curl_params = array())

在初始化cURL之前:

$session = curl_init($url);
我在this request

中提出的

您现在可以在this gist找到工作库

答案 1 :(得分:2)

只需在webservice文件夹中创建一个.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

答案 2 :(得分:1)

您好我也遇到了同样的问题,如果你想避免prestashop的认证,那么你可以在api url中添加该prestashop商店的消费者密钥,如下所示

http://localhost:8080/prestashop/api/products/2/?ws_key=TCXXHYPCT8DHWW64QXU1KEQVF4PQ1SJ6

在访问产品详细信息时,您可以添加消费密钥以访问产品详细信息。 如果您在其他平台中使用prestashop Web服务apis,它也很有用。 感谢

答案 3 :(得分:0)

their documentation开始,您似乎应该能够将API密钥放入URL中,而不是用户名在常规HTTP请求中的位置,例如:

http://[yourapikeyhere]@example.com/api/customers/

引用“使用浏览器测试对Web服务的访问”:

  

商店应提示您输入用户名和密码。 ID是身份验证密钥,没有密码。

...似乎与您对用户名与密码的说法相符。看起来这些人正在使用API​​密钥作为常规HTTP基本身份验证意义上的用户名而没有密码(否则将是http://user:password@example.com),这似乎与他们上面提供的RESTful URL示例相匹配。如果通过浏览器进行的基本身份验证无效,我建议您的API密钥更可能出错 - 请记住,它很可能是区分大小写的。

答案 4 :(得分:0)

从prestashop 1.7.4开始,他们提供了另一种方法。

ie;访问http://yourstore.com/api/

它将提示输入用户名/密码。

输入您作为用户名生成的密钥,并将密码字段保留为空。

这将为您提供类似的输出

<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
  <api shopName="Tureds">
    <products xlink:href="https://www.tureds.com/api/products" get="true" put="false" post="true" delete="false" head="false">
      <description xlink:href="https://www.tureds.com/api/products" get="true" put="false" post="true" delete="false" head="false"> The products</description>
      <schema xlink:href="https://www.tureds.com/api/products?schema=blank" type="blank"/>
      <schema xlink:href="https://www.tureds.com/api/products?schema=synopsis" type="synopsis"/>
    </products>
  </api>
</prestashop>

enter image description here

记住

  1. 在后端启用Web服务。
  2. 无需重新生成.htaccess文件。 .htaccess文件的重新生成适用于旧版本的 prestashop。