Wie wird oAuth mit Guzzle 5 (oder besser mit Guzzle 6) verwendet?

Ich versuche, mithilfe von Guzzle 5 eine Verbindung zur WooCommerce-API herzustellen (Guzzle 6 verfügt anscheinend nicht über oAuth-Optionen o.O.). Woocommerce erfordert die Authentifizierungsmethode oAuth arbeiten

Dies ist der Code, den ich verwende:

<?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"...'

Dieser Code gibt ein @ zurü

woocommerce_api_authentication_error: Ungültige Signatur - vorausgesetzt, die Signatur stimmt nicht mit @ übere

Verwenden Sie reine Lockenfunktionen (mitdieses Pake, in dem ich einige Funktionen abgelegt habe, die ich gefunden habeHie), stattdessen funktioniert es und ich erhalte alle Bestellungen und andere Daten, die ich möchte.

EINIGE ANDERE DETAILS

Zur Verwendung von Guzzle 5 und oAuth verwende ich die folgenden Composer-Pakete:

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

Es scheint, dass es einige Dinge gibt, die sich beim Erstellen der Signatur unterscheiden: die von @ erstelltdie Bibliothek, die ich bis jetzt benutzt habe funktioniert, aber das vom oAuth-Plugin mit der MethodegetSignature()) für Guzzle nicht und ich bin es nicht gewohnt, oAuth zu verwenden, um den Fehler zu finden. Gibt es jemanden, der mir helfen kann, das Problem zu identifizieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage