지난시간에 네이버 스마트스토어 상품을 가져다 쿠팡 API로 쿠팡에 업로드 하는 방법 첫번째 시간을 가졌었습니다.
오늘은 쿠팡 API 연동시 발생하는 인증 에러 관련해서 처리 방법을 알아보겠습니다.
Table Of Contents
401 Unauthorized 오류
쿠팡의 openAPI는 한 업체에 하나의 앱만 연결 가능합니다. 그러므로, 자체개발하는 경우 다른 툴 연동은 안된다고 보시면 됩니다.
OpenAPI Key가 정상적으로 등록되어있지 않으면 401 Unauthorized 에러가 발생합니다.
자체개발 Key 등록하기
OPEN API를 발급 받으면 업체를 입력해야하는데, "판매자정보 > 추가판매정보"로 이동해서 OPEN API 키 수정 항목을 눌러서 "자체개발"을 입력해 주시면 됩니다.
업체명과 URL, IP 주소를 넣으면 되는데, 업체명은 본인 업체 이름넣으면 됩니다.
URL의 경우에는 따로 업체 URL이 없으시면 wing.coupang.com을 입력하시면 됩니다.
마지막으로 IP 주소를 넣어야 하는데, 이 때 IP 주소는 아래 링크를 눌러서 확인하시면 됩니다.
내 공인 IP 주소를 가장 빠르게 찾는 방법 - the fastest way to find a my public IP address
혹시 쿠팡 API 사용하시다가 아래와 같이 인증 에러가 나타나면, IP 주소가 맞는지 먼저 확인해 보시는게 좋습니다.
<HTTPError 401: 'Unauthorized'>
"Specified signature is expired." 에러가 발생하는 경우
쿠팡 API는 서명 생성 시 UTC 시간을 요구하기 때문에 UTC 기준으로 작성해야합니다.
그런데, 쿠팡에 있는 파이썬 예제 프로그램에 버그가 있어서 정상 동작하지 않습니다.
방법 1 timezone을 GMT+0으로 설정.
쿠팡 오픈 API 예제 소스는 아래와 같이 되어있는데, 이렇게 하면 UTC 시간을 얻을 수 없습니다.
쿠팡이 셀러나 개발자에게 불친절한 것 같다는 생각이 들었는데, 아래 코드가 정상 동작을 하지 않아서 1:1 문의를 했더니, 다른 사람 코드는 디버깅 해줄 수 없다네요... ㅎㅎㅎ
제 코드가 아니라 샘플이 안된다고 했는데.. 무슨 말을 하는건지... 그러면서 샘플은 그냥 참고용이라고 합니다.
그럼 쿠팡 API 예제를 보여드리겠습니다. 아래 코드인데요,
아래 코드에서 os.environ['TZ'] = 'GMT+0' 다음 라인에 "time.tzset()"를 호출하지 않아서 정상 동작하지가 않습니다.
정말 심플한 예제인데, 동작 확인도 안하고 올려놓고... 문의해도 나 몰라라 하는 쿠팡의 대응에 약간 실망하였습니다.
time.tzset() 만 넣고 돌리면 바로 동작하니, 참고하세요 ^^
os.environ['TZ'] = 'GMT+0'
datetime=time.strftime('%y%m%d')+'T'+time.strftime('%H%M%S')+'Z'
method = "POST"
path = "/v2/providers/seller_api/apis/api/v1/marketplace/seller-products"
message = datetime+method+path
#replace with your own accesskey
accesskey = "****"
#replace with your own secretKey
secretkey = "****"
#********************************************************#
#authorize, demonstrate how to generate hmac signature here
signature=hmac.new(secretkey.encode('utf-8'),message.encode('utf-8'),hashlib.sha256).hexdigest()
authorization = "CEA algorithm=HmacSHA256, access-key="+accesskey+", signed-date="+datetime+", signature="+signature
#print out the hmac key
#print(authorization)
#********************************************************#
방법2 UTC gmtime 사용
UTC vs. KST: 한국 시간(KST)은 UTC보다 9시간 빠릅니다. 쿠팡 API는 요청 시 UTC 시간을 사용하여 서명을 생성해야 합니다. 만약 한국 시간을 사용하면, 401 Unauthorized 오류가 발생할 수 있습니다.
gmtime() 사용: gmtime() 함수는 UTC 시간으로 현재 시간을 반환합니다. 이를 통해 API 요청에 필요한 정확한 UTC 시간이 보장됩니다.
from time import strftime, gmtime
# 현재 UTC 날짜를 'YYMMDD' 형식으로 반환
dateGMT = strftime('%y%m%d', gmtime())
# 현재 UTC 시간을 'HHMMSS' 형식으로 반환
timeGMT = strftime('%H%M%S', gmtime())
# 날짜와 시간을 조합하여 'YYMMDDTHHMMSSZ' 형식으로 설정
datetime = dateGMT + 'T' + timeGMT + 'Z'
위와같이 하시면 쿠팡 셀러 API를 사용하기 위한 Hmac Signature까지 완료되었습니다.
다음 시간에는 이제 네이버에서 상품을 가져와서 어떻게 쿠팡에 올릴지 하나씩 알아보도록 하겠습니다.
'IT' 카테고리의 다른 글
HP 노트북의 에러 없애기 - HP Client Security 제거로 DPPassFilter.dll 오류 해결 (3) | 2024.11.04 |
---|---|
네이버 스마트스토어 상품 가져와서 쿠팡에 자동으로 올리는 프로그램 만들기 (5) | 2024.10.28 |
우분투 20.04 리눅스에서 crontab(크론탭)으로 주기적인 작업 자동화하기 (0) | 2024.10.21 |
우분투에서 크롬 드라이버와 Selenium으로 headless(헤드리스) 웹 크롤링 문제 해결하기 (1) | 2024.09.23 |
파이썬으로 웹 페이지 크롤링 - 홈페이지 로그인 하기 (1) | 2024.09.23 |