증권관련 페이지를 자동으로 포스팅하기위해서 자료조사하다가.. 워드프레스의 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
을 적어줬다.
- 도움말 페이지에서는 https://api.wordpress.org/secret-key/1.1/salt/ 부분에서 발췌해서 쓰라고 한다.
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 를 이용하여 send 하면 request 에 토큰정보가 반환된다.
- 이후에 발급받은 토큰정보를 이용하여 호출하면된다.
step4. 사용하기
발급받은 토큰정보는 post 요청시 header 부분에 Authorization:Bearer xxxxxxxxxx
이런식으로 넣어서 호출하면된다.
- 한번받은 토큰은 계속해서 못사용하는것 같다. 유효기간이 있는것 같음