sourcecode

Wordpress 투명 OAuth 1.0 PHP 로그인

copyscript 2023. 2. 7. 20:05
반응형

Wordpress 투명 OAuth 1.0 PHP 로그인

저는 현재 Wordpress via OAuth 1.0에 로그인하고 API에 요청을 하는 PHP 프로젝트를 프로그래밍하고 있습니다.

워크플로우는 다음과 같습니다.

  1. 요청 토큰을 가져옵니다.
  2. 요청 토큰을 사용하여 Wordpress에 로그인합니다.(문제는 여기에 있습니다)
  3. 로그인 후 credential을 인가하고 Verifier 토큰을 가져옵니다.
  4. 액세스 토큰을 가져옵니다.
  5. 마지막으로 AT와 AT Secret으로 API 호출을 합니다.

XAMPP의 localhost 테스트는 정상적으로 동작하지만 코드를 서버(UNIX)에 업로드하면 Wordpress Login에서 쿠키에 문제가 발생합니다.

cURL을 통해 로그인 호출을 하고 쿠키를 설정한 후 응답을 HTML로 해석합니다(인증 페이지로 전송하려면 "_wpnonce" 필드가 필요합니다).

문제는 항상 Enable Cookies Error(쿠키 활성화 오류)가 발생한다는 것입니다.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에 1회, 다른 데이터 키/값으로 다시 1회.다음 중 하나를 시도해 보십시오.

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

하지만 둘 다 가질 순 없어요

언급URL : https://stackoverflow.com/questions/35172823/wordpress-transparent-oauth-1-0-login-with-php

반응형