Magento 2 Rest API - ошибка подписи при получении всех продуктов - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над Magento2 REST API с помощью oAuth.Я также использую CURL для вызова REST API.

Мои API работают, если я вызываю API для получения конкретной информации о клиенте или конкретной информации о продукте.

Но когда я вызываю API, чтобы получить все продукты, он запрашивает критерии поиска.И если я использую критерии поиска, то это показывает мне ошибку типа «Неверная подпись».Я видел, что многие из нас имеют эту проблему.

Есть ли решение?

Спасибо заранее.

Мой фрагмент кода выглядит следующим образом.

function sign($method, $url, $data, $consumerSecret, $tokenSecret)
{
    $url = urlEncodeAsZend($url);

    $data = urlEncodeAsZend(http_build_query($data, '', '&'));
    $data = implode('&', [$method, $url, $data]);

    $secret = implode('&', [$consumerSecret, $tokenSecret]);

    return base64_encode(hash_hmac('sha1', $data, $secret, true));
}

function urlEncodeAsZend($value)
{
    $encoded = rawurlencode($value);
    $encoded = str_replace('%7E', '~', $encoded);
    return $encoded;
}

$consumerKey = "myconsumerKey";
$consumerSecret = "myconsumerSecret";
$accessToken = "myaccessToken";
$accessTokenSecret = "myaccessTokenSecret";



$method = 'GET';

$searchCriteria = urlencode('searchCriteria[filterGroups][0][filters][0][field]=category_id&searchCriteria[filterGroups][0][filters][0][value]=1268&searchCriteria[filterGroups][0][filters][0][conditionType]=eq&searchCriteria[sortOrders][0][field]=created_at&searchCriteria[sortOrders][0][direction]=DESC&searchCriteria[pageSize]=10&searchCriteria[currentPage]=1');
//$searchCriteria['pageSize'] = 20;
$url = 'http://myhost.local/rest/V1/products?' . $searchCriteria;

//var_dump($url);exit;

//
$data = [
    'oauth_consumer_key' => $consumerKey,
    'oauth_nonce' => md5(uniqid(rand(), true)),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => time(),
    'oauth_token' => $accessToken,
    'oauth_version' => '1.0',
];

$data['oauth_signature'] = sign($method, $url, $data, $consumerSecret, $accessTokenSecret);
//var_dump($data['oauth_signature']);exit;
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_HTTPHEADER => [
        'Authorization: OAuth ' . http_build_query($data, '', ',')
    ]
]);

$result = curl_exec($curl);
curl_close($curl);
var_dump($result);exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...