[파이썬]네이버 커머스 API 인증 토근 발급 받기
본문 바로가기
IT/파이썬

[파이썬]네이버 커머스 API 인증 토근 발급 받기

by SageIN 2023. 2. 2.
반응형

OAuth 2.0 인증

 

인증 토큰을 발급후 api 요청시 헤더에 토큰을 추가하여 인증을 받고 통신하는 형태로 진행된다.

 

Authorization: Bearer {인증 토큰}

Security Scheme Type: OAuth2
Flow type: clientCredentials
Token URL: https://api.commerce.naver.com/external/v1/oauth2/token

 

전자서명 생성 방법

 

import bcrypt
import pybase64

clientId = "발급받은ID"
clientSecret = "발급받은 시크릿코드"
timestamp = 1643961623299
# 밑줄로 연결하여 password 생성
password = clientId + "_" + str(timestamp)
# bcrypt 해싱
hashed = bcrypt.hashpw(password.encode('utf-8'), clientSecret.encode('utf-8'))
# base64 인코딩
print(pybase64.standard_b64encode(hashed).decode('utf-8'))

# 실행 결과
JDJhJDEwJGFiY2RlZmdoaWprbG1ub3BxcnN0dXVCVldZSk42T0VPdEx1OFY0cDQxa2IuTnpVaUEzb

 

여기 까지는 네이버 api 문서에 나와있는 내용이다. 전자서명 하는 부분에서도 타임스탬프를 숫자로 적어놔서 현재의 시간을 구해와야 한다.

 

KST = timezone(timedelta(hours=9))
now = datetime.now(KST)
print(now,datetime.timestamp(now))
# from time import ctime
timestamp = datetime.timestamp(now) * 1000
timestamp = int(timestamp)

 

GMT 에서  KST로 변경하고 datetime.timestamp 함수에 1000을 곱해 api에서 요구하는 13자리 타임스탬프를 만들어준다.

API 문서에 나와있는 정보를 보고 POST로 해당 필드를 채워 보내면 정상적으로 토큰을 발급해준다.

 

access_url = "https://api.commerce.naver.com/external/v1/oauth2/token"
headers = {'User-Agent': 'python-naverlogin'}
data = {
            "client_id": self.clientId,
            "timestamp": timestamp,
            "client_secret_sign": signature,
            "grant_type": "client_credentials",
            "type": "SELF"
}

r = requests.post(access_url, data=data, headers=headers)
json_object = json.loads(r.text)

access_token = json_object["access_token"]

 

 

발급받은 토큰을 다른 API를 요청할때 헤더에 넣어 사용하면다. 

 

headers = { 'Authorization': "Bearer "+access_token }

 

반응형

댓글


TOP

Designed by 티스토리