2016-02-03 40 views
8

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:

  1. Prendi un token di richiesta.
  2. Con il token di richiesta, accedere a Wordpress. (Il problema è qui)
  3. Dopo l'accesso, autorizzare le credenziali e ottenere il token di verifica.
  4. Ottenere un token di accesso.
  5. 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!

+0

sei sicuro che il tuo '$ url' è impostato correttamente? –

+0

Sì, l'ho controllato molte volte ed è l'URL corretto. Come ho detto, su localhost funziona. –

risposta

1

Poiché non posso commentare direttamente, ma vorrei offrire la mia osservazione, sembra che tu stia cercando di impostare lo oauth_token due volte, una volta nell'URL di reindirizzamento, e ancora una volta come chiave/valore dati separato Prova:

$data = array(); 

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

o

$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; 

Ma in realtà non si può avere entrambe le cose.