我需要在 Visual Studio 项目中创建对 Magento 2 SOAP API 的服务引用。所以我在 Magento 后端创建了一个集成,授予它所有访问权限并激活它。
但是当我尝试在 http://my.magento/soap/default?wsdl&services=customerCustomerRepositoryV1 访问 WSDL(即客户 API)时,我得到了异常:
消费者无权访问%resources
好的,我明白了。我需要我的访问令牌来访问这些特定的“管理”API。因为像“quoteGuestCartRepositoryV1”这样的公共 API 确实可以工作。当我在 http://my.magento/soap/default?wsdl_list=1 获取完整的 API 列表时,它也只列出公共/来宾 API。
到目前为止没有问题,但是当我尝试在 Visual Studio 中添加“customerCustomerRepositoryV1”作为服务引用时,当然会抛出授权异常。但我无法实际将访问令牌添加到那里的标头中。
有没有办法匿名访问所有 WSDL? Magento 1.x 曾经允许这样做。
是的,这是一个 Magento 错误。自最近的 Magento 版本以来,WSDL 不再可以匿名使用。我认为这是开发者的一个愚蠢的决定。
https://github.com/magento/magento2/issues/5330#issuecomment-255222166
对于“解决方案”:https://community.magento.com/t5/Programming-Questions/Magento-2-C-APIs-SOAP-problem/m-p/49677#M1206