Wie verwende ich die OAuth-Authentifizierung mit der REST-API über CURL-Befehle?
-
-
Die Dinge sindnicht soeinfach.Ich habe versucht,eine Antwort zu schreiben,aberesist ziemlich lang.Sie können zunächst die Dokumente lesen,insbesondere [The Authorization Flow] (https://github.com/WP-API/OAuth1/blob/master/docs/basics/Auth-Flow.md).Dieser Beitragenthält auchein [großartiges Tutorial] (https://timnash.co.uk/wordpress-rest-api-authentication-examples/).Things are not so easy. I've been trying to write an answer but it is quite long. You could start by reading the docs, specially [The Authorization Flow](https://github.com/WP-API/OAuth1/blob/master/docs/basics/Auth-Flow.md). This posts has also a [great tutorial](https://timnash.co.uk/wordpress-rest-api-authentication-examples/).
- 2
- 2016-01-01
- cybmeta
-
2 Antworten
- Stimmen
-
- 2016-04-15
Update: Nach dem,wasichgelesen habe,müssen Siemehrere Locken ausführen,um das access_token zuerhalten,mit dem Sie dann die Abfrage ausführen
- Erfassungtemporärer Anmeldeinformationen: Der Clienterhälteine Reihetemporärer Anmeldeinformationen vom Server.
- Autorisierung: Der Benutzer "autorisiert" das Anforderungstokenfür den Zugriff auf sein Konto.
- Token-Austausch: Der Clienttauscht die kurzlebigentemporären Anmeldeinformationengegen ein langlebiges Token aus.
Update: From what I've read, you need to do multiple curls to get the access_token, which you then use to do the query
- Temporary Credentials Acquisition: The client gets a set of temporary credentials from the server.
- Authorization: The user "authorizes" the request token to access their account.
- Token Exchange: The client exchanges the short-lived temporary credentials for a long-lived token.
-
- 2016-09-20
Ich weiß,dassichetwas spät dranbin,aber können Sie wp_remote_get und _post verwenden?
Ich ziehe Inhaltemit meiner WordPress-Installation undposte siemit folgenden Elementen:
Diesist die allgemeine Idee aus dem WordPress-Kodex:
$response = wp_remote_post( $url, array( 'body' => $data, 'httpversion' => '1.0', 'sslverify' => false, 'headers' => array( 'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ), ), ) );
Hieristein spezifischeres Beispiel:
$url='http://WWW.EXAMPLE HERE.'; $response = wp_remote_post( $url, array( 'method' => 'POST', 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', //needed to get a response 'blocking' => true, 'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MY TOKENID' . ':' . '' )), 'body' => $body // in array 'cookies' => array() ) ); if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); echo "Something went wrong: $error_message"; } else { // echo 'Response:<pre>'; // print_r( $response ); // echo '</pre>'; $responseBody = json_decode($response['body'],true); echo $responseBody['message']; } } }
Der Trickbesteht darin,den Benutzernamen undpw zu codieren. Abhängig vom API-Benutzernamen undpwist die Zeit häufig leer oder Ihre Token.
So warenbeispielsweisein meinem obigen Beispiel die Überschriften
'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MYTOKENID' . ':' . '' ))
undich habepw leergelassen. Dies hängtjedoch vom verwendeten API-System ab.
I know I'm coming into this a bit late, but can you use wp_remote_get and _post?
I'm pulling and posting content with my wordpress install using them:
THis is the general idea from the wordpress codex:
$response = wp_remote_post( $url, array( 'body' => $data, 'httpversion' => '1.0', 'sslverify' => false, 'headers' => array( 'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ), ), ) );
Here is a more specific example:
$url='http://WWW.EXAMPLE HERE.'; $response = wp_remote_post( $url, array( 'method' => 'POST', 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', //needed to get a response 'blocking' => true, 'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MY TOKENID' . ':' . '' )), 'body' => $body // in array 'cookies' => array() ) ); if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); echo "Something went wrong: $error_message"; } else { // echo 'Response:<pre>'; // print_r( $response ); // echo '</pre>'; $responseBody = json_decode($response['body'],true); echo $responseBody['message']; } } }
The trick is encoding the username and pw. Now often time depending on the API username and pw will either be blank or will be your tokens.
so for instance in my specific example above, the headers were
'headers' => array('Authorization' => 'Basic ' . base64_encode( 'MYTOKENID' . ':' . '' ))
and i left pw blank. That's up to the API system you're using though.
Ich versuche,die WordPress Rest-APImit Authentifizierung zu verwenden,ummehr Daten von der API zuerhalten. Ich habe das Oauth-Plugin,das Rest-API-Plugininstalliert und API-Anmeldeinformationen von WP-CLIerhalten.
Ich habe herausgefunden,wieich ohne Autorisierung auf Daten zugreifen kann. Diesfunktioniert:
Aberich kannnicht herausfinden,wieichmichmit Anmeldeinformationen authentifizieren kann. Hieristmein Versuch. Ichbin nicht sicher,ob "Schlüssel" und "Geheimnis" korrekt sind.
Die Ausgabeist
Wie kannich das zum Laufenbringen? Vielen Dank.