Skip to content
money-insight/commerce-seo

์ฟ ํŒก API ํ™œ์šฉ๊ณผ ์‚ฌ์šฉ๋ฐฉ๋ฒ• 8ํŽธ ์ฟ ํŒก API V2 ๊ฐ€์ด๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API V2 ์‚ฌ์šฉ๋ฒ•๊ณผ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ํ™œ์šฉ๋ฒ•

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API V2 ์ถ”์ฒœ ์‹œ์Šคํ…œ: ๋ธ”๋กœ๊ทธ ์šด์˜์ž๋“ค์ด ์ž๋™์œผ๋กœ ์ตœ์ ํ™”๋œ ์ƒํ’ˆ์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” API ๊ธฐ๋Šฅ๊ณผ ํ™œ์šฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค


์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API๋Š” ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํšŒ์›๋“ค์ด ์ฟ ํŒก ๋‚ด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์กฐํšŒํ•˜๊ณ , ์ถ”์ฒœ ์ƒํ’ˆ์„ ์ž์‹ ์˜ ์›น์‚ฌ์ดํŠธ๋‚˜ ๋ธ”๋กœ๊ทธ ๋“ฑ์— ํšจ์œจ์ ์œผ๋กœ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ํŠนํžˆ V2 ๋ฒ„์ „์€ ์ด์ „ ๋ฒ„์ „์ธ V1๊ณผ ๋น„๊ตํ•ด ์—ฌ๋Ÿฌ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ์œผ๋กœ, ๊ธฐ์กด V1์ด ์ฝ˜ํ…์ธ  ๋‚ด ํŠน์ • ํ‚ค์›Œ๋“œ๋‚˜ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜์ž๊ฐ€ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ์ƒํ’ˆ์„ ๋…ธ์ถœํ–ˆ๋‹ค๋ฉด, ์ฟ ํŒก API V2๋Š” ์‚ฌ์šฉ์ž์˜ ํ™˜๊ฒฝ๊ณผ ํ–‰๋™์— ๋งž์ถฐ ์ฟ ํŒก์—์„œ ์ƒํ’ˆ์„ ์ž๋™์œผ๋กœ ์ถ”์ฒœํ•˜๊ณ  ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐฉ๋ฌธ์ž์—๊ฒŒ ๋”์šฑ ๋งž์ถคํ™”๋œ ์ƒํ’ˆ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ,V2 ๋ฒ„์ „์€ ๋ณด์•ˆ๊ณผ ๊ธฐ๋Šฅ ๋ฉด์—์„œ๋„ ํฌ๊ฒŒ ๊ฐ•ํ™”๋˜์–ด, ํŠนํžˆ HMAC ์„œ๋ช… ๋ฐฉ์‹์„ ํ™œ์šฉํ•œ ์•ˆ์ •์ ์ธ ์ธ์ฆ ์ฒด๊ณ„๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ฟ ํŒก API ํ™œ์šฉ๋ฐฉ๋ฒ•์— ์žˆ์–ด ๋ณด์•ˆ์€ ํ•„์ˆ˜ ์š”์†Œ๋กœ, ๋ชจ๋“  API ํ˜ธ์ถœ ์‹œ HMAC ์„œ๋ช…์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ƒํ’ˆ์„ ์ตœ๋Œ€ํ•œ ๋…ธ์ถœ์‹œํ‚ค๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๊ธฐ์กด์— ์ž‘์„ฑํ•œ ์ฟ ํŒก ์ƒํ’ˆ ์ž๋™ ๋…ธ์ถœ ํ•„ํ„ฐ๋ง ๊ด€๋ จ ๊ธ€๋„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ฟ ํŒก API ํ‚ค ์ƒ์„ฑ๋ถ€ํ„ฐ ํ˜ธ์ถœ๊นŒ์ง€, ํŒŒํŠธ๋„ˆ์Šค API V2 ์™„์ „ ์ •๋ณต

๋ณธ ๊ธ€์—์„œ๋Š” ์ฟ ํŒก ์ž์ฒด ์ถ”์ฒœ ์ƒํ’ˆ ๋…ธ์ถœ ๋ฐฉ์‹๊ณผ ์ฟ ํŒก API V2์˜ ์ฃผ์š” ํŠน์ง•์„ ์ƒ์„ธํžˆ ๋‹ค๋ฃจ๋ฉฐ, ์ฟ ํŒก API ํ™œ์šฉ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉ๋ฒ•์€ ๋ฌผ๋ก , ์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™” ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1. ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API๋ž€?

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API๋Š” ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํšŒ์›๋“ค์ด ์ฟ ํŒก ๋‚ด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์ถ”์ฒœ ์ƒํ’ˆ์„ ๊ฐ€์ ธ์™€ ์ž์‹ ์˜ ์›น์‚ฌ์ดํŠธ๋‚˜ ๋ธ”๋กœ๊ทธ ๋“ฑ์— ํšจ์œจ์ ์œผ๋กœ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. V2 ๋ฒ„์ „์€ ์ด์ „ ๋ฒ„์ „๋ณด๋‹ค ๋ณด์•ˆ๊ณผ ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋˜์–ด, HMAC ์„œ๋ช… ๋ฐฉ์‹์œผ๋กœ ์•ˆ์ •์ ์ธ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํŒก API ํ™œ์šฉ๋ฐฉ๋ฒ•

2. ์ฟ ํŒก API ์‹œ์ž‘ํ•˜๊ธฐ: Access Key์™€ Secret Key ๋ฐœ๊ธ‰

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API๋Š” ์ตœ์ข… ์Šน์ธ๋œ ํšŒ์›์—๊ฒŒ๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์•„์ง ์ตœ์ข… ์Šน์ธ์ด ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ œํœด ID(AF ID)์™€ ๊ด‘๊ณ  ๊ฒŒ์žฌ ์œ„์น˜ ๋ฐ ๊ด‘๊ณ  ํ˜•ํƒœ๋ฅผ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ๋ฉ”์ผ๋กœ ๋ฌธ์˜ํ•˜์—ฌ ๋ณ„๋„ ๊ฒ€ํ† ๋ฅผ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API V2 ํ‚ค ๋ฐœ๊ธ‰ ๋ฐฉ๋ฒ•

  1. ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ์‚ฌ์ดํŠธ ์ƒ๋‹จ ๋ฉ”๋‰ด๋ฐ”์—์„œ Tools ํŒŒํŠธ๋„ˆ์Šค API ๋กœ ์ด๋™ํ•˜์„ธ์š”.
  2. ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฐ”๋กœ Access Key์™€ Secret Key๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์Šต๋‹ˆ๋‹ค.
  3. ๋ณด์•ˆ์ƒ ํ‚ค๋Š” ์ ˆ๋Œ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3.์ฟ ํŒก API ํ˜ธ์ถœ ์‹œ HMAC ์„œ๋ช… ์ƒ์„ฑ๋ฒ•

ํŒŒํŠธ๋„ˆ์Šค API๋Š” HMAC (Hash Message Authentication Code) ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” API ํ˜ธ์ถœ ์‹œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ๋กœ, ๋ชจ๋“  ์š”์ฒญ์— HMAC ์„œ๋ช…์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// HMAC ์„œ๋ช… ์ƒ์„ฑ Java ์˜ˆ์‹œ
public static String generate(String method, String uri, String secretKey, String accessKey) {
// ์„œ๋ช… ์ƒ์„ฑ ๋กœ์ง...
return String.format("CEA algorithm=HmacSHA256, access-key=%s, signed-date=%s,
signature=%s", accessKey, datetime, signature);
}

์„œ๋ช… ์ƒ์„ฑ ํ›„ Authorization ํ—ค๋”์— ์„œ๋ช…์„ ๋„ฃ์–ด HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ธ์ฆ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

4. ์‹ค์ œ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API ํ˜ธ์ถœ ์˜ˆ์‹œ

์•„๋ž˜๋Š” Java๋ฅผ ์ด์šฉํ•ด ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ธฐ๋ณธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

// OpenApiTestApplication.java ๋ฐœ์ทŒ
String authorization = HmacGenerator.generate(REQUEST_METHOD, URL, SECRET_KEY, ACCESS_KEY);
HttpRequest request = RequestBuilder.post(URL)
.setEntity(new StringEntity(REQUEST_JSON, "UTF-8"))
.addHeader("Authorization", authorization)
.build();
HttpResponse response = HttpClientBuilder.create().build().execute(host, request);
System.out.println(EntityUtils.toString(response.getEntity()));

์„ฑ๊ณต ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ JSON ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

{
"rCode": "0",
"rMessage": "",
"data": [
{
"originalUrl": "https://www.coupang.com/np/search?component=&q=good&channel=user",
"shortenUrl": "https://coupa.ng/bgQjht"
},
...
]
}

5. ํŒŒํŠธ๋„ˆ์Šค API V2 ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ๊ณผ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

  • Unknown error occurred ๋“ฑ ์ธ์ฆ ์‹คํŒจ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ, ํ‚ค ๊ฐ’๊ณผ ์„œ๋ช… ์ƒ์„ฑ ๊ณผ์ •, API ์—”๋“œํฌ์ธํŠธ ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•˜์„ธ์š”.
  • Access Key์™€ Secret Key๋Š” ๊ฐœ์ธ์ •๋ณด์™€ ๊ฐ™์œผ๋‹ˆ ์ฒ ์ €ํžˆ ๋ณด๊ด€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • API ํ˜ธ์ถœ์€ HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, CORS ์ •์ฑ…์— ๋งž๊ฒŒ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

6. ์ฟ ํŒก API V2 ํ‚ค ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ ์‚ฌ์šฉ๋ฒ•

API ํ‚ค๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ณ  ์‰ฝ๊ฒŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์›น UI๋ฅผ ์ œ๊ณตํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

UI ๊ตฌ์„ฑ

  • ์ฟ ํŒก Access Key ์ž…๋ ฅ๋ž€
  • ์ฟ ํŒก Secret Key ์ž…๋ ฅ๋ž€
  • ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ ๋ฒ„ํŠผ
  • ๋ณต์‚ฌ ๋ฐ ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ
  • ์ƒ์„ฑ๋œ API ํ‚ค ์ฝ”๋“œ ์ถœ๋ ฅ๋ž€ (์ฝ๊ธฐ ์ „์šฉ)

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ž…๋ ฅํ•œ ํ‚ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌ๊ธ€ ์•ฑ์Šค ์Šคํฌ๋ฆฝํŠธ์šฉ ์ธ์ฆ ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ
  • ๋ณต์‚ฌ ๋ฒ„ํŠผ์œผ๋กœ ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์†์‰ฝ๊ฒŒ ๋ณต์‚ฌ
  • ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์œผ๋กœ ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ์„ ํ•œ๋ฒˆ์— ์ดˆ๊ธฐํ™”

์ฟ ํŒก API ์ฝ”๋“œ ์ž๋™์ƒ์„ฑ๊ธฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ๋ณธ์ธ์˜ ์ฟ ํŒก Access Key์™€ Secret Key๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
  2. ์ฝ”๋“œ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•˜๋‹จ ์ถœ๋ ฅ๋ž€์— ์™„์„ฑ๋œ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  3. ๋ณต์‚ฌ ๋ฒ„ํŠผ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด ๊ตฌ๊ธ€ ์•ฑ์Šค ์Šคํฌ๋ฆฝํŠธ์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์„ธ์š”.
  4. ํ•„์š” ์‹œ ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋‹ค์‹œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟ ํŒก API APP V2 ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ

์•„๋ž˜ ์ฝ”๋“œ๋Š” https://script.google.com/ ์‚ฌ์ดํŠธ์— ์ ์šฉํ•˜์„ธ์š”. ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ๋ณด์‹œ๋ ค๋ฉด; ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์•„๋ž˜์— ์ฟ ํŒก API ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ๊ตฌ๊ธ€ ์•ฑ์Šค ์Šคํฌ๋ฆฝํŠธ์šฉ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ตฌ๊ธ€ ์•ฑ์Šค ์Šคํฌ๋ฆฝํŠธ์— ๋ถ™์—ฌ๋„ฃ์–ด ์‚ฌ์šฉํ•˜์„ธ์š”.

์ฟ ํŒก API V2 ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ

์•„๋ž˜์— ๊ตฌ๊ธ€ ์•ฑ์Šค ์ฃผ์†Œ, ๊ด‘๊ณ  ๋…ธ์ถœ ์œ„์น˜, ์ฟ ํŒก ์ œํœด ์•„์ด๋””, ๊ทธ๋ฆฌ๊ณ  ์ƒํ’ˆ ๋…ธ์ถœ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ์— ์ ์šฉํ•  ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋Š” HTML์˜ body ์ƒ๋‹จ์— ์‚ฝ์ž…ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ: ๊ด‘๊ณ ๋ฅผ ๋…ธ์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜์— div id="coupang-ad-container"/div๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

HTML์— ์ ์šฉํ•˜๋Š” CSS ์˜ˆ์‹œ

.coupang-ad-list {
 display: flex;
 flex-wrap: wrap;
 justify-content: center;
 gap: 20px;
}

.coupang-ad-item {
 margin: 10px;
 border: 1px solid #eee;
 padding: 10px;
 width: 180px;
 text-align: center;
 background: white;
 color: black;
 box-sizing: border-box;
 scroll-snap-align: start;
}

.coupang-ad-img {
 width: 150px;
 height: 150px;
 object-fit: contain;
}

.coupang-ad-name {
 white-space: normal;
 margin: 10px 0 8px;
 overflow: hidden;
 text-overflow: ellipsis;
 display: -webkit-box;
 -webkit-line-clamp: 2;
 -webkit-box-orient: vertical;
 color: #333;
 line-height: 1.4;
 font-size: 14px;
 min-height: 3.1em;
}

.coupang-ad-price {
 font-weight: bold;
 color: #0073e6;
}

.coupang-ad-footer {
 font-size: 12px;
 color: var(--pcs-border-tag-primary);
 margin-top: 15px;
 text-align: center;
}

/* ๋ฐ์Šคํฌํƒ‘ (768px ์ด์ƒ) */
@media (min-width: 768px) {
 .coupang-ad-list {
 flex-wrap: nowrap;
 justify-content: space-between;
 }

 .coupang-ad-item {
 flex: 0 0 calc((100% - 80px) / 5);
 /* 5๊ฐœ ์ผ๋ ฌ ๋ฐฐ์น˜, ๊ฐ„๊ฒฉ ๊ณ ๋ ค */
 margin: 0;
 }
}

/* ๋ชจ๋ฐ”์ผ (767px ์ดํ•˜) */
@media (max-width: 767px) {
 .coupang-ad-list {
 flex-wrap: nowrap !important;
 overflow-x: auto !important;
 scroll-snap-type: x mandatory !important;
 -webkit-overflow-scrolling: touch !important;
 padding: 10px 5px !important;
 margin: 10px 0 !important;
 gap: 12px !important;
 }

 .coupang-ad-list::-webkit-scrollbar {
 display: none !important;
 }

 .coupang-ad-item {
 flex: 0 0 auto !important;
 width: 220px !important;
 margin: 0 !important;
 border: none !important;
 box-shadow: 0 0 5px rgba(0,0,0,0.1) !important;
 border-radius: 6px !important;
 scroll-snap-align: start !important;
 background: white !important;
 }
}

์ฟ ํŒก API V2 ์ง์ ‘ ์ œ์ž‘ ์‹œ ๊ผญ ์•Œ์•„์•ผ ํ•  ์ฃผ์š” ์‚ฌํ•ญ

์ฟ ํŒก API ์‘๋‹ต ๊ตฌ์กฐ์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์ฟ ํŒก RECO API๋Š” ์‹ค์ œ ์ƒํ’ˆ ์ •๋ณด๊ฐ€ data.result ๋ฐฐ์—ด ์•ˆ์— ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ดˆ๊ธฐ์—๋Š” data๊ฐ€ ๋ฐ”๋กœ ๋ฐฐ์—ด์ธ ์ค„ ์•Œ๊ณ  ์ฒ˜๋ฆฌํ–ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” data.result๋กœ ์ ‘๊ทผํ•ด์•ผ ์ •ํ™•ํ•œ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ œ๋Œ€๋กœ ๋ฐ›๊ธฐ

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „๋‹ฌํ•˜๋Š” deviceId, pageUrl, domain, ua, puid ๋“ฑ ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ ๋ฐ›๊ณ , ์ด ๊ฐ’์„ API ์š”์ฒญ์— ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์—ฌ ์ฟ ํŒก API๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

HMAC ์‹œ๊ทธ๋‹ˆ์ฒ˜(์ธ์ฆ ํ—ค๋”) ์ƒ์„ฑ ์ฝ”๋“œ ์™„์„ฑ ๋ฐ ์ ์šฉ

์ฟ ํŒก API๋Š” ๋ชจ๋“  ์š”์ฒญ๋งˆ๋‹ค ์ธ์ฆ์šฉ **HMAC ์‹œ๊ทธ๋‹ˆ์ฒ˜**๋ฅผ ์ƒ์„ฑํ•ด Authorization ํ—ค๋”์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์—ฌ ์ธ์ฆ ์˜ค๋ฅ˜ ์—†์ด API ์š”์ฒญ์ด ์ •์ƒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‘๋‹ต ๋ฐ์ดํ„ฐ์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ์ถ”์ถœํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ

Google Apps Script๊ฐ€ ์ฟ ํŒก API ์ „์ฒด ์‘๋‹ต์„ ๋ฐ›๋”๋ผ๋„, ํด๋ผ์ด์–ธํŠธ(ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ๋“ฑ)์—๋Š” ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋งŒ data.result ํ˜•ํƒœ๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ „๋‹ฌํ•ด ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ƒ์„ธํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฐ˜ํ™˜

๋งŒ์•ฝ API ํ˜ธ์ถœ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์–ด๋””์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์ƒ์„ธํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•ด ์‘๋‹ตํ•˜๋„๋ก ํ•˜์—ฌ ๋””๋ฒ„๊น…์ด ์‰ฝ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ƒ์„ธ ๋ฉ”์‹œ์ง€ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋””๋ฒ„๊น… ์‰ฝ๊ฒŒ

  • ๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋Š”์ง€ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•ด์„œ ์‘๋‹ตํ•˜๋„๋ก ํ–ˆ์–ด์š”.

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API V2๋Š” ํŒŒํŠธ๋„ˆ ์—ฌ๋Ÿฌ๋ถ„์ด ์ฟ ํŒก ์ƒํ’ˆ์„ ๋” ์‰ฝ๊ฒŒ ๋…ธ์ถœํ•˜๊ณ , ๋งž์ถคํ˜• ์ƒํ’ˆ ์ถ”์ฒœ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•œ API ํ‚ค ์ƒ์„ฑ๊ธฐ์™€ HMAC ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ์ฐธ๊ณ ํ•ด ํŽธ๋ฆฌํ•˜๊ฒŒ API๋ฅผ ํ™œ์šฉํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ, ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ๊ณ ๊ฐ์„ผํ„ฐ ๋ฐ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ตœ์‹  ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”.


์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API V2๋ž€ ๋ฌด์—‡์ด๋ฉฐ, V1๊ณผ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค API V2๋Š” ์ฟ ํŒก ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ž๋™ ์กฐํšŒํ•˜๊ณ  ์ถ”์ฒœ ์ƒํ’ˆ์„ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ž๋™ ๋…ธ์ถœํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ API์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด V1์€ ์šด์˜์ž ์ค‘์‹ฌ์œผ๋กœ ์ฝ˜ํ…์ธ  ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ๋…ธ์ถœ์ด์—ˆ์ง€๋งŒ, V2๋Š” ์‚ฌ์šฉ์ž ํ–‰๋™๊ณผ ํ™˜๊ฒฝ์— ๋งž์ถ˜ ๋งž์ถคํ˜• ์ถ”์ฒœ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

์ฟ ํŒก API V2๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

์ตœ์ข… ์Šน์ธ๋œ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํšŒ์›๋งŒ Access Key์™€ Secret Key๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ์‚ฌ์ดํŠธ์˜ Tools > ํŒŒํŠธ๋„ˆ์Šค API ๋ฉ”๋‰ด์—์„œ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋ณด์•ˆ์„ ์œ„ํ•ด ํ‚ค๋Š” ์ ˆ๋Œ€ ๋…ธ์ถœํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ํ˜ธ์ถœ ์‹œ์—๋Š” HMAC ์„œ๋ช…์„ ๋งŒ๋“ค์–ด Authorization ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ์•ผ ์ธ์ฆ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ฟ ํŒก API V2๋ฅผ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

API ์‘๋‹ต ๊ตฌ์กฐ(data.result)๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ(deviceId, pageUrl, domain, ua, puid)๋ฅผ ์ฟผ๋ฆฌ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HMAC ์„œ๋ช… ์ƒ์„ฑ ์ฝ”๋“œ๋ฅผ ์ •ํ™•ํžˆ ๊ตฌํ˜„ํ•ด ์ธ์ฆ ์˜ค๋ฅ˜ ์—†์ด ํ˜ธ์ถœํ•˜๋ฉฐ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ƒ์„ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์‰ฝ๊ฒŒ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ‚ค๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Latest in this category

    ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค API V2 ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์‹ ์ƒํ’ˆ ๋ฐ ์ธ๊ธฐ์ƒํ’ˆ์ด ์ž๋™ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    AI ์ฑ—๋ด‡์œผ๋กœ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉˆ์ถค
    ๋…ธ๋ž˜ ์žฌ์ƒ ๋ฉˆ์ถค