Gehen wir hier Schritt für Schritt vor. Anscheinend versuchen Sie, OAuth nur für die Authentifizierung zu verwenden, aber bevor Sie dies tun können, müssen Sie das Zugriffstoken abrufen , das zur Authentifizierung bei Ihren API-Aufrufen verwendet wird.
Da dies OAuth Version 1 verwendet, müssen Sie die folgenden Schritte ausführen, um das Zugriffstoken zu erhalten :
- Richten Sie zunächst eine Anwendung ein und rufen Sie die Site an, um das Anforderungstoken (temporäre Anmeldeinformationen) mit der Client-ID und dem geheimen Kennwort für die Anwendung abzurufen
- Rufen Sie anschließend die Site an, um die Anwendung mit dem Anforderungstoken aus dem ersten Schritt zu autorisieren (mit Blick auf den Benutzer, siehe unten).
- Drittens rufen Sie nach Abschluss der Autorisierung die Site an, um das Zugriffstoken zu erhalten (jetzt, da die Anwendung autorisiert wurde).
Ich empfehle die Verwendung von Postman für die ersten Schritte, da diese nur einmal ausgeführt werden müssen. Postman wird auch den Griff zu erzeugen timestamp
, nonce
und oauth signature
, also , wenn Sie nicht eine OAuth - Bibliothek verwenden, dann sollten Sie unbedingt Postman verwenden. Sobald Sie Ihr Access Token haben , können Sie die Anrufe über CURL ohne Bibliotheken tätigen.
https://www.getpostman.com/
Erster Schritt (Setup-Anwendung)
Installiere das WP OAuth 1 Plugin, aktiviere es und gehe dann zum Menüpunkt unter Users> Applications . Neue Anwendung hinzufügen, Name und Beschreibung ausfüllen. Für einen Rückruf entweder die URL, zu der der Benutzer umgeleitet werden soll (nach der Autorisierung), oder oop
für einen Out-of-Band-Fluss, der zu einer internen Seite umgeleitet wird, auf der das Prüfer-Token angezeigt wird (anstatt umzuleiten).
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
Um mit dem zweiten Schritt fortzufahren, muss ein Anruf an Ihre Site mit der Client-ID und dem Client-Geheimnis der erstellten Anwendung getätigt werden , um temporäre Anmeldeinformationen (Request Token) abzurufen.
Öffnen Sie Postman, erstellen Sie einen neuen Anruf http://website.com/oauth1/request
, klicken Sie auf die Registerkarte Autorisierung, wählen Sie OAuth 1.0 aus der Dropdown-Liste aus, geben Sie den Client-Schlüssel und das Client-Geheimnis ein, setzen Sie die Signaturmethode auf HMAC-SHA1
, aktivieren Sie das Hinzufügen von Parametern zum Header, codieren Sie die Signatur und klicken Sie dann auf Aktualisierungsanforderung
Postman generiert automatisch die Signatur, den Nonce und den Zeitstempel für Sie und fügt sie der Kopfzeile hinzu (Sie können sie auf der Registerkarte "Kopfzeilen" anzeigen).
Klicken Sie auf Senden , und Sie sollten eine Antwort erhalten, der folgendes beinhaltet oauth_token
und oauth_token_secret
:
Diese Werte werden im nächsten Schritt verwendet, um die Anwendung unter Ihrem WordPress-Benutzerkonto zu autorisieren.
Zweiter Schritt (Antrag genehmigen)
Der Autorisierungsschritt muss nur einmal ausgeführt werden. Dieser Schritt ist benutzerbezogen und jedem vertraut. Dieser Schritt ist erforderlich, da Sie OAuth1 verwenden und die Anwendung mit einem WordPress-Benutzerkonto verknüpft sein muss. Überlegen Sie, wann eine Website es Ihnen ermöglicht, sich mit Facebook anzumelden. Sie werden zu Facebook weitergeleitet, wo Sie sich anmelden und auf "Autorisieren" klicken. Dies muss nur über Ihre WordPress-Website erfolgen.
Ich empfehle, für diesen Schritt Ihren Webbrowser zu verwenden, da Sie einfach die Variablen in der URL festlegen können. Auf dieser Seite wird die Seite "Autorisieren" zum Autorisieren der Anwendung angezeigt.
Öffnen Sie Ihren Webbrowser und geben Sie die URL zu Ihrer Site wie folgt ein:
http://website.com/oauth1/authorize
Ergänzen Sie nun diese URL oauth_consumer_key
(Client-ID) oauth_token
und oauth_token_secret
(aus dem vorherigen Schritt). In meinem Beispiel ist dies die vollständige URL:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
Sobald Sie auf Autorisieren klicken, wird ein weiterer Bildschirm mit dem Bestätigungstoken angezeigt. In meinem Beispiel ist dies das zurückgegebene VerifikationstokenE0JnxjjYxc32fMr2AF0uWsZm
Dritter Schritt (Zugriffstoken abrufen)
Nachdem wir die Anwendung autorisiert haben, müssen wir einen letzten Aufruf durchführen, um das Autorisierungstoken abzurufen, das für alle API-Aufrufe verwendet wird. Genau wie im ersten Schritt verwende ich Postman (da die Signatur HMAC-SHA1 sein muss), und dies erleichtert die Durchführung dieser Schritte um das 100-fache.
Öffnen Sie Postman erneut und ändern Sie die URL in http://website.com/oauth1/access
Stellen Sie sicher, dass Sie das Token und das Token Secret (Werte aus dem ersten Schritt) hinzufügen, und klicken Sie dann auf Params , um die Felder unter der URL anzuzeigen . Geben Sie links oauth_verifier ein und rechts den Code aus dem zweiten Schritt, dem Verification Token
Stellen Sie sicher, dass Sie auf Update Request und dann auf Send klicken, und Sie sollten eine Antwort mit oauth_token
und oauth_token_secret
... erhalten. Dies ist, was Sie benötigen, um Ihre API-Aufrufe zu tätigen! Verwerfen Sie die Originale aus Schritt 1, speichern Sie diese in Ihrem Code oder an einem anderen sicheren Ort.
Anschließend können Sie einen API-Aufruf an Ihre Site senden und die Header mit dem zurückgegebenen Token und dem Token-Geheimnis festlegen.
Sie können dies auf mehrere Arten über den Autorisierungsheader, in GET-Parametern oder POST (wenn als application / x-www-form-urlencoded codiert) übergeben. Denken Sie daran, dass Sie die Unterschrift, den Zeitstempel und den Nonce weitergeben MÜSSEN. Ich wusste nicht, wie lange diese Antwort dauern würde, also werde ich dies morgen mit einem Beispiel aktualisieren, um dies mit Ihrem Code zu tun.
Ich empfehle dringend, das Rest-API-Protokoll zu installieren, damit Sie das Protokoll der API-Aufrufe anzeigen und sehen können, was gesendet, zurückgegeben usw. wurde. Dies hilft beim Debuggen enorm.
https://github.com/petenelson/wp-rest-api-log