Attualmente sto programmando un progetto PHP che vuole accedere in Wordpress vía OAuth 1.0 e quindi effettuare richieste a un'API.Wordpress Transparent OAuth 1.0 Login con PHP
Il flusso di lavoro è la seguente:
- Prendi un token di richiesta.
- Con il token di richiesta, accedere a Wordpress. (Il problema è qui)
- Dopo l'accesso, autorizzare le credenziali e ottenere il token di verifica.
- Ottenere un token di accesso.
- Infine, effettuare chiamate API con il segreto AT e AT.
I miei test su localhost sotto XAMPP funzionano correttamente, ma quando carico il codice sul server (UNIX) ho un problema con il login di Wordpress con i cookie.
Sto effettuando la chiamata di accesso tramite cURL, impostando i cookie e quindi analizzando la risposta a HTML (ho bisogno del campo "_wpnonce" per inviare alla pagina di autorizzazione).
Il problema è che ottengo sempre l'errore Abilita cookie. Ho provato tutte le combinazioni di parametri Curl, usato tutte le configurazioni e gli esempi, ma non sono riuscito a lavorare :(
Il codice attuale è:
//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");
Che cosa mi manca
Grazie a? advance!
sei sicuro che il tuo '$ url' è impostato correttamente? –
Sì, l'ho controllato molte volte ed è l'URL corretto. Come ho detto, su localhost funziona. –