programing

WordPress rest API OAuth curl 명령

linuxpc 2023. 3. 7. 21:08
반응형

WordPress rest API OAuth curl 명령

WordPress rest API와 WordPress OAuth 서버 셋업 플러그인이 설정되어 있으며, 콜 콘텐츠에서 필요한 OAuth 토큰 또는 OAuth 비밀 정보가 제공되지 않을 때마다 http://sevengoslings.net/~fangel/oauth-private/를 사용하여 인증을 시도하고 있습니다.

https://wordpress.org/support/topic/json-rest-api-from-mobile-app-with-authentication에서 다음 절차를 수행해 보았습니다.

1. Enter base url (http(s)://your.domain.com/oauth1
2. Access token = request
3. Authorize = authorize
4. Access_Token = access
5. Enter your consumer key and secret (leave method as HMAC-SHA1)

클릭Get Request Token콜 콘텐츠를 얻을 수 있습니다.

Call Content에 표시해야 합니다.

Call content now = 

oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true

하지만 난 이것만 알아

 page not found 

여기서는 3레그 OAuth1.0a를 사용할 수 없었기 때문에 다른 플러그인이 필요하며 생산에 권장되지 않는 기본 OAuth를 사용했습니다.

다른 서명 방법을 사용해야 합니까?

서버로부터 OAuth 허가를 받기 위한 2개의 curl 명령어와 액세스 토큰+리프레쉬 토큰과 교환하기 위한 다른 명령어를 찾고 있습니다.

나는 이 일을 할 수 있고 내가 이 일을 어떻게 해왔는지 개략적으로 설명하겠다.

는 API 호출을 테스트하고 완성하기 위해 Postman 어플리케이션을 사용하고 있습니다.이것을 사용하는 것을 강력히 추천합니다.콜이 실행되면 PHP Curl(또는 필요한 모든 것)로 내보낼 수 있습니다.

Postman을 사용하면 이 공유 링크를 사용하여 내 API 호출을 볼 수 있습니다.

문제가 있는번째 통화의 경우 다음과 같은 설정이 있습니다.

먼저 엔드포인트 URL을 확인했습니다.

{{url}}/oauth1/request

API Call을 PUSH로, AuthType을 OAuth 1.0으로 설정했습니다.

[ WP Backend ]> [ Users ]> [ Applications ]에서 작성한 consumer_key 와 consumer_secret 를 추가했습니다(이것은 OAuth 플러그인으로 추가됩니다).

시그니처 방식 - HSAC-SHA1

그런 다음 Postman이 이를 업데이트하고 Nonce, Timestamp 및 Version을 동적으로 작성합니다.

내 왕국을 '예'로 설정합니다.

그런 다음 - 헤더에 매개 변수 추가 - 서명에 빈 매개 변수 추가 옵션을 활성화했는지 확인했습니다.

패러머에 대한 정보는 다음과 같습니다.

realm="Example",oauth_consumer_key="AdPuqyWrAQQc",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1470248765",oauth_nonce="dnOTvG",oauth_version="1.0",oauth_signature="gUahTX2hfV1lqZCfMUvHtLLoauI%3D"

이것에 의해, 다음의 출력이 표시됩니다.

oauth_token=xbTb4E93K6pP2tcg4qGJIYgl&oauth_token_secret=qWo01WL2ish205yvjiU8qyCkKVPMNUvSbKpFBB1T1oOuOtBc&oauth_callback_confirmed=true

Postman을 사용하여 이 API 호출을 cURL 함수로 내보낼 수 있습니다.이 경우 다음과 같이 표시됩니다.

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://mydomain.dev/oauth1/request",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_consumer_key\"\r\n\r\nAdPuqyWrAQQc\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_token\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature_method\"\r\n\r\nHMAC-SHA1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_timestamp\"\r\n\r\n1470241356\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_nonce\"\r\n\r\n7VKp4N\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_version\"\r\n\r\n1.0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature\"\r\n\r\n9qRrIkDxt56S9Ikf061eFOVLAdA%3D\r\n-----011000010111000001101001--",
  CURLOPT_HTTPHEADER => array(
    "authorization: OAuth realm=\"Example\",oauth_consumer_key=\"AdPuqyWrAQQc\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1470248765\",oauth_nonce=\"dnOTvG\",oauth_version=\"1.0\",oauth_signature=\"gUahTX2hfV1lqZCfMUvHtLLoauI%3D\"",
    "cache-control: no-cache",
    "content-type: multipart/form-data; boundary=---011000010111000001101001",
    "postman-token: dd85258e-a72a-b731-82d1-00109e30962f"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo 'response ' . $response;

  $a = parse_str($response);

  echo 'token ' . $oauth_token;
  echo '<br>';
  echo 'secret '. $oauth_token_secret;


}

이것은 OAuth 인증의 3단계 프로세스 중 1단계입니다.나는 이제 막 그들 모두를 연결하기 위한 여행을 시작했어.문서도 많지 않고 예도 많지 않습니다.

스텝 2는 지정된 토큰과 시크릿을 사용하여 /oauth1/authorize에 대한 콜처럼 보입니다.이 경우 사용자 로그인과 새로운(및 영구) 토큰 및 암호가 생성되어야 할 것으로 보입니다.

스텝 3은 /oauth1/access에 대한 콜처럼 보입니다.

스텝 2와 스텝3이 올바르게 링크되지 않았습니다만, 올바른 토큰을 반환하지 않는 첫 번째 스텝에 대한 원래 쿼리를 지원하기 위해 투고해야 한다고 생각했습니다.

이 기사는 WP-API와 OAuth의 사용법을 설명하는 좋은 기사 중 하나입니다.

언급URL : https://stackoverflow.com/questions/34357786/wordpress-rest-api-oauth-curl-commands

반응형