在Magento REST API中禁用/不使用oAuth的任何方法?

时间:2014-01-07 10:19:57

标签: oauth

是否可以(暂时?)禁用对Magento中oAuth的要求,并仍然通过REST API检索产品数据等?

所以基本上能够通过HTTP发出GET请求而不使用oAuth并仍然返回数据?

谢谢,

4 个答案:

答案 0 :(得分:11)

临时禁用oAuth:

  1. 确保您拥有管理员用户类型角色:系统 - >网络服务 - > REST - 角色。如果没有,请添加新角色并指定所需的Role API Rsources。
  2. 确保您拥有REST属性的完全权利:System - >网络服务 - > REST - 管理员用户类型的属性。
  3. Trick Magento Auth Model认为它已经加载了管理员用户:
  4. 查看app / code / core / Mage / Api2 / Model / Auth.php下的Mage_Api2_Model_Auth模型

    public function authenticate(Mage_Api2_Model_Request $request)
    {
      ...
      $authAdapter   = Mage::getModel('api2/auth_adapter');
      $userParamsObj = $authAdapter->getUserParams($request);
      // Added code:
      $userParamsObj->type = 'admin';
      $userParamsObj->id = 1;
    }
    

答案 1 :(得分:4)

我最近不得不在Magento的Oauth实施上挣扎,我设法通过禁用Oauth机制来完成我的测试......

如果您只是输入以下URL,Magento假定您以访客身份进行连接。 http://www.yourmagentopath.com/api/rest/products?limit=2(例如)

目前默认情况下,Guest角色无权查看任何信息。 这将返回403(访问被拒绝)。

请登录Magento Admin,Goto System-> Web Services-> REST - 角色 从列表中选择“访客”,然后单击框以允许访客帐户查看详细信息。

保存详细信息并从上面提供的链接刷新页面。您现在应该看到以XML格式显示的2个产品。

要查看所有产品,只需删除限制...

答案 2 :(得分:1)

可以在Magento中添加custom REST authentication adapter。例如,您可以使用 HMAC 方法来保护客户端和服务器之间的通信。

答案 3 :(得分:0)

关于restful webservices,我认为magento永远不会允许在没有OAUTH的情况下使用允许的方式公开其API。

我还计划在没有Oauth的情况下实现一个宁静的调用,它应该返回Json或我想要的HTML内容,而不需要任何额外的HTML,例如页眉,页脚等。

完成工作的一种简单方法是实现新的自定义模块。由于您希望模块的行为类似于一个宁静的Web服务,因此只需从新模块布局中删除所有元素(页眉,页脚,左右导航等,这会在输出中添加额外的不需要的内容)。

或者只是在控制器中打印结果,不要使用下面的代码来渲染布局

 $this->loadLayout();
 $this->renderLayout();