Magento 2 REST API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento 2 REST API相关的知识,希望对你有一定的参考价值。

我正在尝试为Magento REST API创建一个node.js客户端。我使用在我自己的centOS服务器上运行的社区版。

我遵循使用api的步骤:

  • 在Magento管理面板中创建具有管理员角色的用户
  • 创建新的集成
  • 激活集成(在此之后,我收到ConsumerKey,ConsumerSecret,AccessToken,SecretToken)

问题是:当我尝试获取任何端点的get请求时,我得到:

{
Client is not authorized to access this resource: ResourceName
}

请求是:

request({
      url: this.url+endpoint,
      method: 'GET',
      headers:{
        'Authorization': 'Bearer '+bearer,
        'User-Agent': '...',
        'Accept' : 'application/json',
        'Content-Type': 'application/json'
      }
    }, (error, response, body) => {
      callback(error,response,body)
    })

})

我通过此请求正确地获得了持有人(我检查过)令牌:

request({
  url: this.url+'integration/admin/token',
  method: 'POST',
  json:{
    username: this.username,
    password: this.password
  }
}, (error, response, body) => {
    callback(body)
})

浏览magento安装,我遇到了授权请求:

 public function isAllowed($resource, $privilege = null)
{
    return $this->_aclPolicy->isAllowed($this->_aclRoleLocator->getAclRoleId(), $resource, $privilege);
}

如果我改变

return true

我无需身份验证即可访问所有资源,但这不是我想要的

我检查了这个功能

getAclRoleId()

我找到了这个DefaultRoleLocator.php

namespace MagentoFrameworkAuthorizationRoleLocator;

class DefaultRoleLocator implements 
MagentoFrameworkAuthorizationRoleLocatorInterface
{
/**
 * Retrieve current role
 *
 * @return string
 */
public function getAclRoleId()
{
    return '';

}
}

我不是很擅长PHP,而且我是magento的新手。即使是oauth身份验证也失败了。

我要改变这个功能吗?我必须创建另一个RoleLocator类?

任何帮助将非常感激 !

答案

您确定添加了访问所请求资源的权限吗? permissions

以上是关于Magento 2 REST API的主要内容,如果未能解决你的问题,请参考以下文章

Magento 2 REST API

用于 PayPal 模块的 Magento 2 REST api

Magento REST API故障:xml无效

Magento 2 FPC 在库存更新后完全清除(REST API)

Magento的REST API URL

如何在 Magento 中使用 REST API 获取产品信息