Register an application
Create App
App Management → Create App 클릭한다.
Seller In-house APP 선택한다.
APP에 대한 정보를 작성한다. (APP 이름, Callback URL, 설명 등)
TESTAPP이 잘 생성된 것을 확인 할 수 있다.
APP 상세 페이지에서 필요한 정보들을 확인한다.
토큰을 발급받기 위해서는 App Key, App Secret 정보를 알아야 한다. (따로 잘 저장해둔다.)
상세 페이지 맨아래 부분에 보면 Whitelist를 추가하는 곳이 있다.
code 값을 받으려면 최소 1개 이상 Whitelist를 추가해야한다. 최대 5개까지 추가가 가능하고, CB(통합) 일 경우, 1개만 추가해도 된다.
Seller ID에는 Short Code를 넣어주고, Seller Email에는 어드민 계정 정보를 넣는다.
라자다 Cross Border 어드민 계정 로그인 페이지 - CrossBorder 탭
My Account → Account Settings으로 이동한다. 각 국가별 Short Code 정보를 알 수 있다.
Authorization
Access token을 발급받기 위해서는 총 4단계를 진행해야한다.
1. Concatenate authorization URL
https://auth.lazada.com/oauth/authorize?response_type=code&force_auth=true&redirect_uri=${app call back url}&client_id=${appkey}
Sample link를 참고해서 URL을 만들어본다. client_id, redirect_uri 만 넣어주면 된다.
2. Guide sellers to authorize
URL로 이동하면 아래와 같은 화면이 나오는데 어드민 계정으로 로그인해서 권한을 승인한다.
3. Retrieve authorization code
설정했던 Redirect uri로 code 값을 받을 수 있다. (code 값은 유효기간이 존재하므로 빠르게 access token을 발급받아 보자)
4. Get the access_token
access token을 발급 받기 위해서는 sign 값이 필요하다. sign 값 받는 방법에 대해선 다음 글에서 자세히 설명하겠다.
Request
const crypto = require('crypto');
const axios = require('axios');
require("dotenv").config();
const getAccesstoken = () => {
const app_key = process.env.APP_KEY;
const timestamp = new Date().getTime().toString();
const sign_method = "sha256";
const code = process.env.CODE;
const app_secret = process.env.APP_SECRET;
const path = '/auth/token/create';
let sign_format = `${path}app_key${app_key}code${code}sign_method${sign_method}timestamp${timestamp}`;
sign_format = sign_format.toString();
const sign = crypto.createHmac('sha256', app_secret).update(sign_format).digest('hex').toUpperCase();
return axios({
method: 'GET',
url : 'https://api.lazada.com.my/rest/auth/token/create',
params: {
app_key: app_key,
timestamp: timestamp,
sign_method: sign_method,
sign: sign,
code :code
}
}).then((response) => {
console.log(response.data)
}).catch((err) => {
closing();
console.log(err)
})
}
getAccesstoken();
Response
country가 cb 즉, Cross Border이기 때문에 access token과 refresh token을 통합으로 1개만 발급 받는다. 해당 access token으로 각 국가별로 API를 호출할 수 있다.
5. RefreshAccess token
request
const crypto = require('crypto');
const axios = require('axios');
require("dotenv").config();
const getAccesstoken = () => {
const app_key = process.env.APP_KEY;
const timestamp = new Date().getTime().toString();
const sign_method = 'sha256';
const app_secret = process.env.APP_SECRET;
const path = '/auth/token/refresh'
let sign_format = `${path}app_key${app_key}refresh_token${process.env.REFRESH_TOKEN}sign_method${sign_method}timestamp${timestamp}`;
sign_format = sign_format.toString();
const sign = crypto.createHmac('sha256', app_secret).update(sign_format).digest('hex').toUpperCase();
return axios({
method: 'GET',
url : `https://api.lazada.com.my/rest${path}`,
params: {
app_key: app_key,
timestamp: timestamp,
sign_method: sign_method,
sign: sign,
refresh_token:process.env.REFRESH_TOKEN
}
}).then((response) => {
console.log(response.data)
}).catch((err) => {
closing();
console.log(err)
})
}
getAccesstoken();
Response
Refresh token을 가지고 Access token 및 Refresh Token을 재발급 받는다. 토큰값은 잘 저장해두고, 만료되기전에 자동으로 갱신해주는 코드를 작성하도록 한다.
* 참고
- Lazada API 공식문서 - GenerateAccessToken
'해외 오픈마켓 - API > Lazada' 카테고리의 다른 글
[API] Lazada - API 호출 예시 (0) | 2023.04.27 |
---|---|
[API] Lazada - Signature algorithm (0) | 2023.04.17 |
댓글