Wordpress Transparent OAuth 1.0 使用 PHP 登录


Wordpress Transparent OAuth 1.0 Login with PHP

我目前正在编写一个PHP项目,该项目想要登录Wordpress vía OAuth 1.0,然后向API发出请求。

工作流程如下:

  1. 获取请求令牌。
  2. 使用请求令牌,登录到Wordpress。(问题出在这里(
  3. 登录后,授权凭据并获取验证者令牌。
  4. 获取访问令牌。
  5. 最后,使用 AT 和 AT 密钥进行 API 调用。

我在XAMPP下的本地主机上的测试工作正常,但是当我将代码上传到服务器(UNIX(时,我遇到了带有cookie的Wordpress登录的问题。

我通过 cURL 进行登录调用,设置 cookie,然后解析对 HTML 的响应(我需要字段"_wpnonce"发送到授权页面(。

问题是我总是收到启用 cookie 错误。我测试了 cURL 参数的所有组合,使用了所有配置和示例,但没有开始工作:(

当前代码为:

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

我错过了什么?

提前感谢!

由于我不能直接发表评论,但想提供我的观察结果,看起来您正在尝试将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;

但实际上你不能两者兼而有之。