1) OAuth 인증 과정 구현하기(1) : 개발자센터 세팅
2) OAuth 인증 과정 구현하기(2) : 인증코드 발급 받기
3) OAuth 인증 과정 구현하기(3) : 엑세스 토큰 발급 받기
4) Cafe24 쇼핑몰에 스크립트 태그 심기
5) Cafe24 쇼핑몰 로그인 여부 확인하기
6) Cafe24 API, 로컬환경에서 테스트하는 방법
7) Cafe24 API, 호출건수 제한, 요청건수 제한의 의미
- Cafe24, 쇼핑몰에 스크립트 태그 심기
엑세스 토큰을 발급 받았기에 이제 Cafe24 내에 있는 모든 API를 사용할 수 있다.
그중 Front API를 사용하기 위한 스크립트 태그를 쇼핑몰에 심어볼 것이다.
공식문서에 있는 양식 중 필요한 부분만 정리하면 아래와 같다.
(display_location 등의 내용은 공식문서를 참고하길 바란다.)
public void addScript(AccessToken token) {
try {
MediaType mediaType = MediaType.parse("");
RequestBody body = RequestBody.create(mediaType, "{\n" +
" \"shop_no\": " + "** SHOP NO **" + ",\n" +
" \"request\": {\n" +
" \"src\": \"" + "스크립트 위치 URL" + "\",\n" +
" \"display_location\": [\"MAIN\"],\n" +
" \"skin_no\": " + "** SKIN NO **" + ",\n" +
" \"integrity\": \"" + "** 무결성 검증 코드 **" + "\"\n" +
" }\n" +
"}");
Request request = new Request.Builder()
.url("https://" + token.getMall_id() + ".cafe24api.com/api/v2/admin/scripttags")
.addHeader("Authorization", "Bearer " + token.getAccess_token())
.addHeader("Content-Type", "application/json")
.post(body)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.println("addScript = " + response.body().string() + "\n");
} catch (Exception e) {
e.printStackTrace();
}
}
위에 코드를 보면, 다른 부분들은 다 이전에 갖고 있는 정보인데 새로운 정보들이 몇 개 있다.
SHOP NO, SKIN NO, 무결성 검증 코드 이렇게 3가지이다.
(무결성 검증 코드 생성은 여기를 참고하면 된다.)
SHOP NO는 스크립트 태그를 심을 쇼핑몰의 번호,
SKIN NO는 스크립트 태그를 심을 쇼핑몰이 사용할 스킨의 번호이다.
이 두 정보는 스킨에 대한 정보만 조회해보면 된다. [스킨 조회 관련 공식문서]
(스킨 정보를 조회하기 위해서는 토큰 발급 시 '디자인 읽기권한(mall.read_design)'을 추가해야 한다.)
public void getSkinNo(AccessToken token) {
try {
Request request = new Request.Builder()
.url("https://" + token.getMall_id() + ".cafe24api.com/api/v2/admin/themes?type=pc")
.addHeader("Authorization", "Bearer " + token.getAccess_token())
.addHeader("Content-Type", "application/json")
.get()
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.println("getSkinNo : " + response.body().string() + "\n");
} catch (Exception e) {
e.printStackTrace();
}
}
위의 코드를 실행하면 아래와 같이 skin에 대한 정보가 json 형태로 받아지게 되며, skin_no와 skin_name으로 해당 skin을 식별할 수 있다.
published_in 값은 해당 스킨을 사용 중인 쇼핑몰의 NO이다. 사용 중이 아니라면 unpublished로 나온다.
(published_in의 값으로 해당 쇼핑몰의 NO를 더 쉽게 찾을 수 있다.)
이제 스크립트 태그를 추가하는 코드에 SHOP NO, SKIN NO, 무결성 검증 코드를 추가한 뒤 실행하면 된다.
Controller 코드는 아래와 같다.
@PostMapping("auth")
public void auth(HttpServletRequest request) {
String mallId = request.getParameter("mall_id");
Auth auth = new Auth(request.getParameter("code"));
AccessToken token = getAccessToken(mallId, auth);
scriptService.getSkinNo(token); // skin 정보 조회
scriptService.addScript(token); // 스크립트 태그 추가
}