Magento SOAP 访问被拒绝

Magento SOAP Access denied

当我尝试使用以下代码使用 webservice 调用本地 Magento 1.9 时,它似乎给我访问被拒绝的错误。

我使用 SOAPUI(或其他 soap 客户端)调用相同的地址没有问题。

PHP代码

<?php
$client = new SoapClient('http://localhost/magento/index.php/api/soap/?wsdl', array('trace' => 1));

$session = $client->login('apiuser', 'apikey');

echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
?>

回复:

$ php -f catalog_product_list.php
PHP Fatal error:  Uncaught SoapFault exception: [2] Access denied. in /catalog_product_list.php:5
Stack trace:
#0 /catalog_product_list.php(5): SoapClient->__call('login', Array)
#1 /catalog_product_list.php(5): SoapClient->login('apiuser', 'apikey')
#2 {main}
  thrown in /catalog_product_list.php on line 4

我曾使用相同的代码调用远程副本,没问题。可能是什么问题?

这听起来像是 CORS 的问题。 (跨源资源脚本)考虑谷歌搜索 CORS 和您的特定开发堆栈。

previous 我正在使用这个地址。 php 或 soapui 都可以。

http://localhost/magento/index.php/api/?wsdl

现在我在我的 soapui 和 php 中都使用这个地址。两人现在都在工作。 http://localhost/magento/index.php/api/soap/?wsdl

解决方法是
1。创建一个新的 SOAP/XML-RPX 角色,比如 "Test"
2。在角色资源中,仅 select "All" 用于资源访问(仅用于测试)
3。编辑用户并将角色分配给 "Test"