본문 바로가기
Cito 일/아무나 하는 파이썬

쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기 (쿠팡파트너스 인증)

by citopes 2020. 8. 22.
반응형

2020/08/18 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기

 

쿠팡파트너스 - 트위터 너무 쉽게 자동 트윗하기

2020/08/18 - [Cito 일/아무나 하는 파이썬] - 쿠팡파트너스 트위터에 공짜로 트윗하기 아무나 할 수 있다. 쿠팡파트너스 트위터에 공짜로 트윗하기 아무나 할 수 있다. 2020/08/11 - [Cito 일/아무나 하는 �

www.citopes.com

이전시간에는 cp.py의 main() 함수 도입 부분을 살펴 보았는데요, main() 함수는 쿠팡 파트너스 api를 호출하는 부분으로 시작 되었습니다.

쿠팡파트너스를 사용하려면 HMAC를 통해서 인증을 받아야 하는데, 이번에는
그 부분을 호출하는 부분을 알아 볼께요.

    def generateHmac(method, url, secretKey, accessKey):
        path, *query = url.split("?")
        os.environ["TZ"] = "GMT+0"

        dateGMT = strftime('%y%m%d', gmtime())
        timeGMT = strftime('%H%M%S', gmtime())
        datetime = dateGMT + 'T' + timeGMT + 'Z'

        message = datetime + method + path + (query[0] if query else "")

        signature = hmac.new(bytes(secretKey, "utf-8"),
                             message.encode("utf-8"),
                             hashlib.sha256).hexdigest()

        return "CEA algorithm=HmacSHA256, access-key={}, signed-date={}, signature={}"\
            .format(accessKey, datetime, signature)

오늘 소스는 길지 않네요.

def generateHmac(method, url, secretKey, accessKey):

함수명은 generateHmac() 으로 정의 했네요, 함수로 받아오는 변수는 method, url, secretKey, accessKey 이렇게 4개가 있어요.
지난 번 시간에 모두 정의를 내린 변수들이고 그 값들이 여기 들어오게 되는거에요

path, *query = url.split("?")

url의 값을 ? 를 기준으로 path와 query로 나눕니다. query는 리스트형 입니다.

os.environ["TZ"] = "GMT+0"
dateGMT = strftime('%y%m%d', gmtime())
timeGMT = strftime('%H%M%S', gmtime())
datetime = dateGMT + 'T' + timeGMT + 'Z'

 쿠팡인증에서는 지금 시각을 요구 합니다. 
시간을 TZ형식으로 전송을 해줘야 하는데, gmtime()이라는 내장함수에서 "년월일"을 뽑아서 dateGMT를, "시분초"를 뽑아서 timeGMT에 각각 값을 담아준다음
TZ형식의 datetime 변수를 만들어 줍니다. 결과는 "200822T115438Z" 이런식으로 표시가 됩니다.

message = datetime + method + path + (query[0] if query else "")

HMAC로 인증시 보낼 자료를 만들어요 
message라는 변수에  위에서 만든 datetime과 method , path, query를 순차적으로 붙여서 작성합니다.
"200822T115438ZGET/v2/providers/affiliate_open_api/apis/openapi/products/bestcategories/1014limit=100"
결과는 이런식으로..

signature = hmac.new(bytes(secretKey, "utf-8"),
                             message.encode("utf-8"),
                             hashlib.sha256).hexdigest()

드디어 hmac에 위에서 만든 값을 보내서 signature를 받아오는 부분 입니다.
지난번에 정의한 secretKey를 입력하고 방금 만든 message를 utf-8로 인코딩해서 입력합니다.

return "CEA algorithm=HmacSHA256, access-key={}, signed-date={}, signature={}"\
            .format(accessKey, datetime, signature)

결과값을 리턴 받는 부분. return access-key, signed-date, signature 값을 받아옵니다.

다음번에는 발급받은 hmac signature를 가지고 쿠팡파트너스 api 호출하는것을 볼께요.

반응형

댓글