WordPress-Rest-API-OAuth-Curl-Befehle

Lesezeit: 4 Minuten

Benutzer-Avatar
0101

ich habe WordPress-Rest-API
und WordPress OAuth-Server-Setup-Plugins einrichten und versuche, mich mit zu authentifizieren http://sevengoslings.net/~fangel/oauth-explorer/
Jedes Mal, wenn der Anrufinhalt mir nicht das OAuth-Token oder OAuth-Geheimnis gibt, das ich brauche.

Ich habe diese Schritte ausprobiert
https://wordpress.org/support/topic/json-rest-api-from-mobile-app-with-authentication

1. Enter base url (http(s)://your.domain.com/oauth1
2. Access token = request
3. Authorize = authorize
4. Access_Token = access
5. Enter your consumer key and secret (leave method as HMAC-SHA1)

Klicken Get Request Token und Sie erhalten Call-Inhalte

Ich sollte das in Call Content bekommen

Call content now = 

oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true

Aber ich bekomme nur das

 page not found 

Hier konnten sie das dreibeinige OAuth1 .0a nicht zum Laufen bringen, also verwendeten sie einfaches OAuth, das ein anderes Plugin erfordert und für die Produktion nicht empfohlen wird.

Sollte ich eine andere Signaturmethode verwenden?

Ich suche nach zwei Curl-Befehlen, um eine OAuth-Bewilligung vom Server zu erhalten, und nach einem anderen, um diese Bewilligung gegen ein Zugriffstoken + Aktualisierungstoken einzutauschen.

  • Können Sie einige Codebeispiele bereitstellen, die Sie bereits ausprobiert haben? Akzeptiert Ihr OAuth-Setup POST-Anfragen? Ist Ihr Setup zugänglich, damit andere es ausprobieren können?

    – dafik

    4. Juli 2016 um 17:52 Uhr

Benutzer-Avatar
Grund

Ich habe das zum Laufen bekommen und ich werde skizzieren, wie ich das gemacht habe.

Ich benutze die Postbote-Anwendung um die API-Aufrufe zu testen und zu perfektionieren. Ich rate dringend davon ab. Sobald der Anruf funktioniert, können Sie ihn nach PHP Curl (oder was auch immer Sie brauchen) exportieren.

Wenn Sie Postman verwenden, können Sie meine API-Aufrufe über diesen freigegebenen Link anzeigen.

Für die Erster Aufruf Sie haben Probleme mit Ich habe die folgenden Einstellungen

Zuerst habe ich sichergestellt, dass meine Endpunkt-URL lautet:

{{url}}/oauth1/request

Ich setze meinen API Call auf PUSH und meinen AuthType auf OAuth 1.0

Ich habe meinen Consumer_key und Consumer_secret hinzugefügt, die ich im WP-Backend > Benutzer > Anwendungen erstellt habe (dies wird mit dem OAuth-Plugin hinzugefügt).

Signaturmethode – HSAC-SHA1

Dann aktualisiert Postman dies und erstellt dynamisch Ihre Nonce, Ihren Zeitstempel und Ihre Version.

Ich habe mein Reich als ‘Beispiel’ festgelegt

Ich habe dann sichergestellt, dass ich die Optionen aktiviert habe: – Parameter zum Header hinzufügen – Leere Parameter zur Signatur hinzufügen

Hier ist, was ich für meine Parameter bekomme:

realm="Example",oauth_consumer_key="AdPuqyWrAQQc",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1470248765",oauth_nonce="dnOTvG",oauth_version="1.0",oauth_signature="gUahTX2hfV1lqZCfMUvHtLLoauI%3D"

Dies liefert mir die folgende Ausgabe:

oauth_token=xbTb4E93K6pP2tcg4qGJIYgl&oauth_token_secret=qWo01WL2ish205yvjiU8qyCkKVPMNUvSbKpFBB1T1oOuOtBc&oauth_callback_confirmed=true

Ich kann Postman verwenden, um diesen API-Aufruf in eine cURL-Funktion zu exportieren, und wenn ja, erhalte ich Folgendes:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://mydomain.dev/oauth1/request",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_consumer_key\"\r\n\r\nAdPuqyWrAQQc\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_token\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature_method\"\r\n\r\nHMAC-SHA1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_timestamp\"\r\n\r\n1470241356\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_nonce\"\r\n\r\n7VKp4N\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_version\"\r\n\r\n1.0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature\"\r\n\r\n9qRrIkDxt56S9Ikf061eFOVLAdA%3D\r\n-----011000010111000001101001--",
  CURLOPT_HTTPHEADER => array(
    "authorization: OAuth realm=\"Example\",oauth_consumer_key=\"AdPuqyWrAQQc\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1470248765\",oauth_nonce=\"dnOTvG\",oauth_version=\"1.0\",oauth_signature=\"gUahTX2hfV1lqZCfMUvHtLLoauI%3D\"",
    "cache-control: no-cache",
    "content-type: multipart/form-data; boundary=---011000010111000001101001",
    "postman-token: dd85258e-a72a-b731-82d1-00109e30962f"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo 'response ' . $response;

  $a = parse_str($response);

  echo 'token ' . $oauth_token;
  echo '<br>';
  echo 'secret '. $oauth_token_secret;


}

Dies ist Schritt 1 eines dreistufigen Prozesses für die OAuth-Authentifizierung. Ich beginne gerade erst mit meiner Reise, um sie alle zu verbinden. Es gibt nicht viel Dokumentation da draußen und nicht viele Beispiele.

Schritt 2 sieht aus wie ein Aufruf von /oauth1/authorize mit dem bereitgestellten Token und Geheimnis. Dies sieht so aus, als ob es dann eine Benutzeranmeldung erfordert und ein neues (und dauerhaftes) Token und Geheimnis erstellt wird.

Schritt 3 sieht aus wie ein Aufruf von /oauth1/access

Ich habe es nicht geschafft, Schritt 2 und Schritt 3 korrekt miteinander zu verknüpfen, aber ich dachte, ich sollte posten, um bei der ursprünglichen Abfrage zu helfen, dass der erste Schritt nicht die richtigen Token zurückgibt

Dieser Artikel ist einer der besseren da draußen, der erklärt, wie man WP-API und OAuth verwendet.

1225980cookie-checkWordPress-Rest-API-OAuth-Curl-Befehle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy