본문 바로가기

코딩/파이썬(Python)

[파이썬] 쿠팡 API 사용시 401, Signature Expired 에러 해결방법

반응형

쿠팡 상품등록 또는 정보 변경시에 사용하는 API를 사용하기 위해서는 인증과정을 거쳐야 하는데, 그 과정에서 현재 시간 정보도 필요하게 된다.

 

developers.coupang.com/hc/ko/articles/360033396034-Python-Example

 

Python Example

1. Python POST Request Example 1) 상품생성 API import os import time import hmac, hashlib import urllib.parse import urllib.request import ssl import json os.environ['TZ'] = 'GMT+0' datetime=time.st...

developers.coupang.com

아래는 쿠팡에서 제공하는 파이썬 샘플 코드인데, authorization을 위해서는 현재 시간에 대한 정보를 datetime이라는 변수에 넣어서 전달하도록 하고 있다.

import os
import time
import hmac, hashlib
import urllib.parse
import urllib.request
import ssl
import json

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)
#********************************************************#

# ************* SEND THE REQUEST *************
url = "https://api-gateway.coupang.com"+path

 

이 코드를 누가 짰는지 모르겠지만... 절대 파이썬 개발자는 아닌 듯 보인다. 변수 명을 파이썬의 기본 라이브러리 중 하나인 datetime으로 한것부터 이상하다. 

 

그리고 위의 코드는 리눅스에서 실행하면 작동하지만, 윈도우에서는 작동하지 않는다. 아마 이 api 개발자는 리눅스나 맥을 쓰지 않을까 생각된다. 

 

위의 코드를 보면 서버 시간을 GMT 시간으로 맞추도록 하고 있는데, 윈도우에서는 파이썬에서 timezone 수정이 안된다.

직접 timedelta 함수를 통해서 계산을 해줘야 한다. 아니면 다른 라이브러리를 사용하던가.

 

아래는 내가 수정한 코드이다. 이렇게 수정을 해주면 윈도우에서 정상적으로 작동이 된다.

 

import os
import time
import hmac, hashlib
import urllib.parse
import urllib.request
import ssl
import json

from datetime import datetime, timedelta

gmt_time = datetime.now() - timedelta(hours=9)   #한국 기준
gmt_time_str = "{:%y%m%d}T{:%H%M%S}Z".format(gmt_time, gmt_time)

method = "POST"

path = "/v2/providers/seller_api/apis/api/v1/marketplace/seller-products"

message = gmt_time_str+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="+gmt_time_str+", signature="+signature
#print out the hmac key
#print(authorization)
#********************************************************#

# ************* SEND THE REQUEST *************
url = "https://api-gateway.coupang.com"+path

 

별것 아니지만, 쿠팡에서도 조금더 신경을 써줬으면 좋겠다.

반응형