Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PrestashopWeb服务API不断要求进行身份验证_Php_Api_Authentication_Get_Prestashop - Fatal编程技术网

Php PrestashopWeb服务API不断要求进行身份验证

Php PrestashopWeb服务API不断要求进行身份验证,php,api,authentication,get,prestashop,Php,Api,Authentication,Get,Prestashop,我遇到这个问题,我从prestashop启用了webservice,如果我直接从post方法传递参数的URL,我可以访问它 “我的钥匙” 但是,如果我尝试访问而不将ws_密钥作为参数传递,它会不断要求我进行身份验证 从我读到的,当认证被提示时,你需要使用API密钥作为用户名,并留下空白密码,但它只是不断提示身份验证。 我能做什么 我一直在努力学习本教程 如果您有任何帮助,我们将不胜感激。看起来您应该能够将API密钥放在URL中,以代替常规HTTP请求中用户名的位置,例如: http://[you

我遇到这个问题,我从prestashop启用了webservice,如果我直接从post方法传递参数的URL,我可以访问它 “我的钥匙”

但是,如果我尝试访问而不将ws_密钥作为参数传递,它会不断要求我进行身份验证

从我读到的,当认证被提示时,你需要使用API密钥作为用户名,并留下空白密码,但它只是不断提示身份验证。

我能做什么

我一直在努力学习本教程

如果您有任何帮助,我们将不胜感激。

看起来您应该能够将API密钥放在URL中,以代替常规HTTP请求中用户名的位置,例如:

http://[yourapikeyhere]@example.com/api/customers/
这段引用自“使用浏览器测试对web服务的访问”:

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


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

对于像我这样的谷歌用户:

自版本1.6.1.1以来,需要在url末尾添加此代码[
?&ws_key=YourSecretKey
],并使用此方法访问Web服务,因为passing as username(在文档中声明)不起作用

 http://[YourPrestaShopUrl]/api?&ws_key=YourSecretKey

 eg: http://192.168.1.148/api/products?limit=5&ws_key=EUQ1J6NT1KVJ1S9SYGRCLGQE8IJU66DA
要使用完成此操作,可以添加此行:

$url .= '&ws_key=' . $this->key;
在第156行(当前版本),该行位于

 protected function executeRequest($url, $curl_params = array())
在初始化卷曲之前:

$session = curl_init($url);

只需在webservice文件夹中创建一个.htaccess,其中包含:

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

重新启动发动机
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]

您好,我也遇到了同样的问题,如果您想避免对prestashop的身份验证,那么您可以在api url中为该prestashop存储添加消费者密钥,如下所示

在这里,在访问产品详细信息时,您可以添加消费密钥以访问产品详细信息。 当您在其他平台中使用prestashop web服务API时,它也很有用。
感谢自从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>

记得吗

  • 在后端启用webservice
  • 无需重新生成.htaccess文件。.htaccess文件的重新生成适用于较旧版本的 普雷斯塔索普

  • 我已经这样做了,它一直提示输入用户名和密码,事实上这是我第一次尝试。感谢you@JuanJaimeEduardoMontemayor你解决这个问题了吗?我也有同样的问题。根据您请求的链接,有人回答说服务器应该缺少一些配置和/或正确格式的.htaccess文件,您知道哪些是conf或htaccess内容吗?@matteobonni'peorthyr'也许您要找的是第二个答案,但我向您保证,我在PrestaShop版本1.7.6.2中的工作环境@MuhammadNaderi提供的解决方案仍然是处理此问题的最简单方法@Matteobonni'peorthyr'链接请求中建议的服务器配置之一是
    basic auth mod
    ,我确认情况并非如此(至少在我的情况下不是这样)。这一确切的提示以前已经给出过。你有什么新的想法吗?