Использование Guzzle php для создания подписи oauth1 - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу использовать Magento 1.x REST API, чтобы получить все продукты из интернет-магазина.Он использует OAUTH1, но у меня есть некоторые проблемы с его настройкой, используя PHP и Guzzle.У меня есть следующая информация:

$consumerKey = '..';
$consumerSecret = '..';
$token = '..';
$tokenSecret = '..';

Используя Postman, я уже могу получить все продукты, поэтому я точно знаю, что значения верны.Мой вопрос сейчас, как мне создать подпись?У меня есть следующий код, но он кажется неправильным:

private function buildSignature()
{
    $nonce = uniqid(mt_rand(1, 1000));
    $timestamp = time();
    $consumerKey = 'xx';
    $consumerSecret = 'xx';
    $token = 'xx';
    $tokenSecret = 'xx';

    $base = 'GET&'. rawurlencode('https://www.magentoshop.com/api/rest/products') .'&'.
        rawurlencode('oauth_consumer_key='. $consumerKey) .'&'.
        rawurlencode('oauth_nonce='. $nonce) .'&'.
        rawurlencode('oauth_signature_method=HMAC-SHA1') .'&'.
        rawurlencode('oauth_timestamp='. $timestamp) .'&'.
        rawurlencode('oauth_token='. $token) .'&'.
        rawurlencode('oauth_version=1.0')
    ;
    $key = rawurlencode($consumerSecret) .'&'. rawurlencode($tokenSecret);

    return base64_encode(hash_hmac('sha1', $base, $key, true));
}

Ответ, который я получаю всегда: "{"messages":{"error":[{"code":401,"message":"oauth_problem=signature_invalid"}]}}"

Что я делаю не так?

1 Ответ

0 голосов
/ 24 декабря 2018
...