SW 개발

[wordpress] rest api 사용하기

. . . 2020. 10. 19. 00:07
반응형

증권관련 페이지를 자동으로 포스팅하기위해서 자료조사하다가.. 워드프레스의 api 세팅하는 방법을 정리한다.

본 글 작성자는, 전문적인 웹 프로그래머가 아니다. 때문에 좀 삽질이나 개념이 다를수있다. 단순히 취미로 코딩하는 사람이다;;

rest api 사용하기 위한 설정

일단, 워드프레스에서 rest api 를 사용하기 위한 인증을 설정을 해야하는데... 기본적으로 인증설정이 안되어있는것 같다.

이것저것 인증관련한 플러그인들을 보면, 좀 인증을 쉽게 뚫어주는 녀석같은경우 유료인경우가 많았다.;; 그래서 무료중에 rest api key 를 만드는녀석을 선정하였다.

플러그인 설치

  • JWT Auth : WordPress JSON Web Token Authentication
    • 홈페이지 : https://wordpress.org/plugins/jwt-auth/

위의 플러그인을 설치한다. 설치후에 https://firxworx.com/blog/wordpress/using-the-wordpress-rest-api-with-jwt-authentication/ 의 페이지를 따라하면 되는데.. 초보의 경우 좀 쉽지가 않다. 그래서 조금 내방식대로 풀어쓴다.

step1 : http .htaccess 파일 수정하기

위의 플러그인을 설치한다음에... 일단 토큰과 관련하여 다음과같이 설정을해줘야한다고 한다.

호스팅한곳의 .htaccess 파일을 다음과 같이 수정하자.

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Enable HTTP Auth
</IfModule>

step2 : wp-config.php 수정하기

적당한곳에 다음과 같은 코드를 삽입한다.

define('JWT_AUTH_SECRET_KEY', 'your-key');
define('JWT_AUTH_CORS_ENABLE', true);

이때... define('JWT_AUTH_SECRET_KEY', 'your-key'); 에서 your-key 는 뭐 중요한 키를 넣으라고 하는데.. 그냥 난 해당파일에서.. define( 'AUTH_KEY', 'xxx'); 부분의 xxx 을 적어줬다.

step3 : api key 발급받기

curl 명령어이용

curl 의 명령어를 이용한다.

curl -X POST \
  http://xxx.xxx.xxx/wp-json/jwt-auth/v1/token \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data;' \
  -F username=your-user-name \
  -F password=your-password

위와같이 명령어를 입력하면... 다음과같이 토큰이 반환된다.

{"success":true,"statusCode":200,"code":"jwt_auth_valid_credential","message":"Credential is valid","data":{"token":"xxx.eyJpc3MiOiJodHRwOlwvXC94ZW5vc2VydmVyLmlwdGltZS5vcmc6MTEwODIiLCJpYXQiOjE2MDMwNjQ5MTYsIm5iZiI6MTYwMzA2NDkxNiwiZXhwIjoxNjAzNjY5NzE2LCJkYXRhIjp7InVzZXIiOnsiaWQiOjF9fX0.n4zyChzhgFt3xPiDxYpb_l2hDPDF4Xe1DqYXs_em4Z4","id":1,"email":"xxx@xxx.com","nicename":"xxx","firstName":"","lastName":"","displayName":"xxx"}}

"data":{"token":"xxx"} 부분이 발급받은 api key 이다.

post man 이용

혹시, post man 으로 사용하려면 다음과같이 해도된다.

크롬의 post man app 을 이용한다.

호스팅한 워드프레스의 /wp-json/jwt-auth/v1/token 주소에...

  • auth -> noauth
  • body 부분에는 다음과같이 채워넣는다. (평문으로 넣는다.)
    • username : 당신의 id
    • password : 당신의 pass word

post man 설정예제

POST 를 이용하여 send 하면 request 에 토큰정보가 반환된다.

  • 이후에 발급받은 토큰정보를 이용하여 호출하면된다.

step4. 사용하기

발급받은 토큰정보는 post 요청시 header 부분에 Authorization:Bearer xxxxxxxxxx 이런식으로 넣어서 호출하면된다.

  • 한번받은 토큰은 계속해서 못사용하는것 같다. 유효기간이 있는것 같음
반응형