파이썬 개발 공유

(네이버 커머스 api) 액세스 인증 토큰 생성 샘플 코드 - python

happyrichman 2022. 11. 2. 15:45

공홈에는 bcrypt 해싱을 사용한 전자성명 예제만 있고,

인증토큰 발급 요청 예제가 없어서 공유합니다.

 

version : python 3.7.9

import urllib.request
import urllib.parse
import bcrypt
import pybase64
import time
import requests

def get_bearer_token(client_id, clientSecret, type_="SELF"):
    # 3초전 timestamp
    timestamp = str(int((time.time()-3) * 1000))
    # 밑줄로 연결하여 password 생성
    password = client_id + "_" + timestamp
    # bcrypt 해싱
    hashed = bcrypt.hashpw(password.encode('utf-8'), clientSecret.encode('utf-8'))
    # base64 인코딩
    client_secret_sign = pybase64.standard_b64encode(hashed).decode('utf-8')
    headers = {"content-type": "application/x-www-form-urlencoded" }

    data_ = {
        "client_id": client_id,
        "timestamp": timestamp,
        "client_secret_sign": client_secret_sign,
        "grant_type": "client_credentials",
        "type": type_
    }
    query = urllib.parse.urlencode(data_)
    oauth_url = 'https://api.commerce.naver.com/external/v1/oauth2/token?' + query

    response = requests.post(url=oauth_url, headers=headers)
    response_data = response.json()

    if 'access_token' in response_data:
        return response_data['access_token']
        
    else:
        print(response_data)
        print("토큰 요청 실패, 재시도")
        time.sleep(1)
        return get_bearer_token(client_id, clientSecret, type_)

참조 : https://apicenter.commerce.naver.com/ko/basic/commerce-api

 

반응형