Wie für die Verwendung von oAuth mit Saufen, 5 (oder, besser, mit Saufen, 6)
Ich versuche zu verbinden, um die WooCommerce API mit Saufen, 5 (Saufen, 6 scheint nicht der Fall hat oAuth-Optionen o.O). Woocommerce erfordert die oAuth-Authentifizierung-Methode zu 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 eine
woocommerce_api_authentication_error: Ungültige Signatur - zur Verfügung gestellt
die Signatur stimmt nicht überein
Verwendung von reinem curl-Funktionen (mit dieses Paket, in dem ich einige Funktionen, die ich gefunden hier), stattdessen, es funktioniert und ich bekomme alle Aufträge und andere Daten, die ich will.
EINIGE ANDERE DETAILS
Verwenden, Saufen, 5 und oAuth verwende ich den composer-Pakete:
"require": {
"guzzlehttp/guzzle": "~5.0"
},
"require-dev": {
"guzzlehttp/oauth-subscriber": "~0.2",
},
Es scheint, gibt es einige Dinge, die anders sind in die Erstellung der Signatur: bei die Bibliothek, die ich verwendet habe, bis jetzt funktioniert, aber bei den oAuth-plugin (mit der Methode getSignature()
) für Saufen nicht und ich bin nicht so verwendet werden, um die Verwendung von oAuth, um den Fehler zu finden. Gibt es jemanden der mir helfen kann das problem zu identifizieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisierung @Aerendir Antwort
In seinem pull-request, @Aerendir hat geschrieben:
Also, um seine Antwort richtig funktioniert, brauchen wir wc-api/v3/ statt wc-api/v2/.
Den folgenden code, funktioniert mit Saufen, 6, oauth und WooCommerce api v3:
Nun das plugin
OauthSubscriber
ist nur für Saufen, 6.Tests rund um wieder, ich habe den Fehler gefunden: es ist in der Methode
signUsingHmacSha1()
sowieso fügt eine umpersand (&), die Zeichenfolge zu unterzeichnen, und dies bewirkt, dass die Fehler von WooCommerce.Habe ich eröffnet ein Thema auf GitHub und einen pull-request gesendet um den Fehler zu beheben.
Den richtigen Weg, um eine Verbindung zu den WooCommerce API V2 mit Saufen, 6 (sobald der Fehler behoben ist! Kümmern sich um die version von WooCommerce API, die Sie verbinden: die API v3 funktioniert immer noch nicht!) ist diese:
, Wie gesagt, diese Verbindung funktioniert nur mit der version 2 die WooCommerce API.
Ich bin zu untersuchen, um zu verstehen, warum die V3 nicht funktioniert.