2016-02-03 61 views
8

我目前正在編寫一個PHP項目,他希望在WordpressvíaOAuth 1.0中登錄,然後向API發出請求。Wordpress透明OAuth 1.0使用PHP登錄

的工作流程如下:

  1. 獲取請求令牌。
  2. 使用請求令牌,登錄到Wordpress。 (問題在這裏)
  3. 登錄後,授權憑證並獲取驗證標記。
  4. 獲取訪問令牌。
  5. 最後,使用AT和AT Secret進行API調用。

我在XAMPP下的本地主機上的測試工作正常,但是當我將代碼上傳到服務器(UNIX)時,我從Cookie中獲得了一個問題。

我通過cURL進行登錄調用,設置cookie,然後解析對HTML的響應(我需要字段「_wpnonce」發送到授權頁面)。

問題是我總是得到啓用Cookies錯誤。我測試的捲曲參數的所有組合,使用的所有配置和實例,但沒有得到工作:(

當前的代碼是:

//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"); 

我缺少什麼

謝謝?前進!

+0

你確定你的'$ url'設置正確嗎? –

+0

是的,我檢查了很多次,這是正確的網址。正如我所說,在本地主機上它工作。 –

回答

1

由於我不能直接發表評論,但想提供我的觀察,它看起來像你試圖設置oauth_token兩次,一次在重定向的URL,並再次作爲一個單獨的數據鍵/值試試:

$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 = array(); 

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

不過說真的,你不能兼得。