OAuth 2.0์ /ads ์๋ํฌ์ธํธ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค
API๋ฅผ ํตํด ์ฃผ๋ฌธ ๋ณด๊ณ ๋ฅผ ํตํฉํ๋ ๊ฒฝ์ฐ /orders ์๋ํฌ์ธํธ๋ฅผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ฐ ๋น๋ฐ API ํค์ ํตํฉํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ID ๋ฐ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ
๋ค์ client_id
๋ฐ client_secret
๊ธฐ์ ๊ณ์ ๊ด๋ฆฌ์๊ฐ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ ๊ฐ์ธ์ฉ์ด๋ฏ๋ก ๊ณต์ ํ ์ ์์ต๋๋ค.
์ก์ธ์ค ํ ํฐ ์์ฒญ
์ก์ธ์ค ํ ํฐ์ ์ป์ผ๋ ค๋ฉด ๋ค์์ ํฌํจํ๋ ์์ฒญ์ ๋ณด๋ด์ผ ํฉ๋๋ค. client_id
๋ฐ client_secret
. ์ด๋ฅผ ์ํํ๋ ค๋ฉด ์๋งค์
์ฒด๊ฐ CitrusAd ์ธ์ฆ ์๋ฒ ์๋ํฌ์ธํธ์ ๋ํ POST ์์ฒญ์ ์์ฑํด์ผ ํฉ๋๋ค.
https://$BASE_URL/v1/oauth2/token
/oauth2/token
๊ด๋ จ ํ ํฐ๋ง ์ ๊ณต๋ฉ๋๋ค. ๊ทํ๋ ์ด๋ฌํ ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํตํฉ ์๋ํฌ์ธํธ์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
์์ฒญ ์ ๋ค์์ ํฌํจํ๋ ์ธ์ฆ ์์ฒญ ํค๋๋ฅผ ํตํด ์ ์ก๋ ๊ธฐ๋ณธ ์ธ์ฆ์ด ํ์ํฉ๋๋ค. client_id
๋ฐ client_secret
base64 ์ธ์ฝ๋ฉ:
Authorization: "Basic" + base64encode(client_id + ":" + client_secret)
๋ค์์ ์ฌ์ฉํ์ฌ ๋ค์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. application/x-www-form-urlencoded
HTTP ์์ฒญ ๋ณธ๋ฌธ ํ์:
grant_type=client_credentials
์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
POST https://$BASE_URL/v1/oauth2/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64 encoded id+key>
grant_type=client_credentials
์ก์ธ์ค ํ ํฐ ์์
์๋ต์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
access_token
: CitrusAd API ํธ์ถ ์ ์ฌ์ฉํ ์ก์ธ์ค ํ ํฐexpires_in
: ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋ ๋๊น์ง์ ์๊ฐ(์ด)token_type
: ๋ฐํ๋ ํ ํฐ์ ์ ํ์ ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ํญ์ ์ ๋ฌ์์ ๋๋ค
์ํ ์๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"access_token": "xxxxx.yyyyy.zzzzz",
"expires_in": 3600,
"token_type": "Bearer"
}
ํ ํฐ ์ฌ์ฉํ๊ธฐ
CitrusAd API ์๋ํฌ์ธํธ์ ๋ํ ํธ์ถ์ ์์ฒญ์ ๋ํ ๊ถํ ํค๋์ ์ก์ธ์ค ํ ํฐ์ ๊ฐ๋จํ ์ถ๊ฐํ์ฌ ์ํํ ์ ์์ต๋๋ค.
Authorization: โBearer โ <access_token>
POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Bearer <access_token>
{
"customerId": "wertg5432a",
"sessionId": "ec9-4e07-881d-3e9",
"placement": "category",
"catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
"productFilters": [
["category:Cupboard/Snacks"]
],
"options": {
"filterMode": "AndOr"
},
"maxNumberOfAds": 3
}
์์ฒญ ์ค๋ฅ
์ ํจํ์ง ์์ ํด๋ผ์ด์ธํธ
๋ง์ฝ ์์ฒญ์์ ์ ์ก๋ client_id
๋๋ client_secret
์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
{
"error": "invalid_client"
}
์ฌ๋ฐ๋ฅธ ์๊ฒฉ ์ฆ๋ช
์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค. ๋ค์์ ๋ค์ ํ ๋ฒ ํ์ธํ์ญ์์ค. client_id
๋ฐ client_secret
๋ํ /token ์๋ํฌ์ธํธ ํธ์ถ ์ ๊ธฐ๋ณธ ์ธ์ฆ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
##Invalid Request
์์ฒญ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์๋ชป๋ ๋งค๊ฐ ๋ณ์ ๊ฐ์ ํฌํจํ๊ฑฐ๋ ๋งค๊ฐ ๋ณ์๊ฐ ๋ ๋ฒ ์ด์ ํฌํจ๋์๊ฑฐ๋ ํ์์ด ์๋ชป๋ ๊ฒฝ์ฐ ์ธ์ฆ ์๋ฒ์์ ์๋ชป๋ ์์ฒญ ์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค.
{
"error": "invalid_request"
}
๋ค์์ ์ํํ์ญ์์ค.
- ์์ฒญ ๋ณธ๋ฌธ์
grant_type=client_credentials
๋ฅผ ํฌํจํฉ๋๋ค - ์์ฒญ ํค๋์
Content-Type
์ ์ ํํ ์ค์ ํฉ๋๋ค