WordPress Transparent OAuth 1.0 Anmeldung mit PHP

Lesezeit: 2 Minuten

Ich programmiere gerade ein PHP-Projekt, das sich in WordPress über OAuth 1.0 anmelden und dann Anfragen an eine API stellen möchte.

Der Arbeitsablauf ist wie folgt:

  1. Holen Sie sich ein Anforderungstoken.
  2. Melden Sie sich mit dem Request Token bei WordPress an. (Das Problem ist hier)
  3. Autorisieren Sie nach der Anmeldung die Anmeldeinformationen und erhalten Sie das Verifier Token.
  4. Holen Sie sich ein Zugriffstoken.
  5. Führen Sie abschließend API-Aufrufe mit AT und AT Secret durch.

Meine Tests auf localhost unter XAMPP funktionieren gut, aber wenn ich den Code auf den Server (UNIX) hochlade, bekomme ich ein Problem von WordPress Login mit den Cookies.

Ich mache den Anmeldeaufruf über cURL, setze die Cookies ein und parse dann die Antwort in HTML (ich brauche das Feld “_wpnonce”, um es an die Autorisierungsseite zu senden).

Das Problem ist, dass ich immer den Enable Cookies Error erhalte. Ich habe alle Kombinationen von cURL-Parametern getestet, alle Konfigurationen und Beispiele verwendet, bin aber nicht zur Arbeit gekommen 🙁

Der aktuelle Code lautet:

//Llamamos al login
$data = array();

$data['log'] = $login;
$data['pwd'] = $password;
$data['redirect_to']="/wp-login.php?action=oauth1_authorize&oauth_token=" . $req_token;
$data['testcookie']="1";
$data['oauth_token']=$req_token;

$cookiefile1 = dirname(__FILE__)."/cookie1.txt" ;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . "/wp-login.php");

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile1);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);

//Una vez logueado tenemos que autorizar

//Obtenemos los datos del formulario
$dom = new DOMDocument();
$dom->loadHTML($output);

$fichero = fopen("test.html","w");
fwrite($fichero,$output);
fclose($fichero);

//$wpnonce = $dom->getElementById("_wpnonce");

Was vermisse ich?

Danke im Voraus!

  • bist du dir sicher $url ist richtig eingestellt?

    – Jameshwart Lopez

    3. Februar 2016 um 10:28 Uhr

  • Ja, ich habe es viele Male überprüft und es ist die richtige URL. Wie gesagt, auf localhost funktioniert es.

    – Rubén Córdoba

    3. Februar 2016 um 10:40 Uhr

Da ich mich nicht direkt äußern kann, aber meine Beobachtung anbieten möchte, sieht es so aus, als ob Sie versuchen, das einzustellen oauth_token zweimal, einmal in der Umleitungs-URL und noch einmal als separater Datenschlüssel/-wert. Versuchen Sie entweder:

$data = array();

$data['log'] = $login;
$data['pwd'] = $password;
$data['redirect_to']="/wp-login.php?action=oauth1_authorize&oauth_token=" . $req_token;
$data['testcookie']="1";

oder

$data = array();

$data['log'] = $login;
$data['pwd'] = $password;
$data['redirect_to']="/wp-login.php?action=oauth1_authorize";
$data['testcookie']="1";
$data['oauth_token']=$req_token;

Aber wirklich beides kann man nicht haben.

1385650cookie-checkWordPress Transparent OAuth 1.0 Anmeldung mit PHP

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

Privacy policy