Como usar oAuth com o Guzzle 5 (ou, melhor, com o Guzzle 6)

Estou tentando conectar-me à API do WooCommerce usando o Guzzle 5 (o Guzzle 6 parece não ter opções oAuth o.O). Woocommercerequer o método de autenticação oAuth trabalhar.

Este é o código que estou usando:

<?php

/**
 * Example of usage of Guzzle 5 to get information
 * from a WooCommerce Store.
 */

require('../vendor/autoload.php');

use GuzzleHttp\Client;
use GuzzleHttp\Subscriber\Oauth\Oauth1;
use GuzzleHttp\Exception\RequestException;

$consumer_key = 'my_consumer_key'; // Add your own Consumer Key here
$consumer_secret = 'my_consumer_secret'; // Add your own Consumer Secret here
$store_url = 'http://example.com'; // Add the home URL to the store you want to connect to here
$api_path = '/wc-api/v2/';
$api_end_point = [
    'root' => '',
    'orders' => 'orders'
    ];

$base_uri = $store_url . $api_path;

$client = new Client([
    'base_url' => $base_uri,
    'defaults' => ['auth' => 'oauth']
    ]);

$oauth = new Oauth1([
    'consumer_key'    => $consumer_key,
    'consumer_secret' => $consumer_secret,
    'request_method'  => 'query'
]);

$client->getEmitter()->attach($oauth);

try
{
    $res = $client->get($api_end_point['orders']);
}
catch (RequestException $e)
{
    $res = $e;

    if ($e->hasResponse())
    {
        $res = $e->getResponse();
    }
}

print_r($res);

echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

Este código retorna um

woocommerce_api_authentication_error: Assinatura inválida - a assinatura fornecida não corresponde

Usando funções de curvatura pura (usandoeste pacote em que coloquei algumas funções que encontreiaqui), em vez disso, funciona e recebo todos os pedidos e outros dados que desejar.

ALGUNS DETALHES

Para usar o Guzzle 5 e o outh, eu uso os pacotes do compositor:

"require": {
    "guzzlehttp/guzzle": "~5.0"
},
"require-dev": {
    "guzzlehttp/oauth-subscriber": "~0.2",
},

Parece que existem algumas coisas diferentes na criação da assinatura: a criada pora biblioteca que eu usei até agora funciona, mas o criado pelo plugin oAuth (usando o métodogetSignature()) para o Guzzle não, e eu não estou tão acostumado a usar oAuth para encontrar o erro. Existe alguém que possa me ajudar a identificar o problema?

questionAnswers(2)

yourAnswerToTheQuestion