▶ OAuth인증
1. api 접근 권한 코드 분석
- 액세스 토큰 발급(필수)


2. 개인정보 모듈 함수(ki_config.py)
# 홈페이지에서 API서비스 신청시 받은 Appkey, Appsecret 값 설정
# 개인정보 예시
# myToken = "1234-123456789ABCD-123456789ABCD-123456789ABCDEFGHIJKLMNO"
#모의투자
APP_KEY= "P000000000000000000000000000000L"
APP_SECRET= "f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000="
CANO= "12345678"
ACNT_PRDT_CD= "01"
URL_BASE= "https://openapivts.koreainvestment.com:29443"
STOCK_BALANCE = "VTTC8434R"
CASH_BALANCE = "VTTC8908R"
#BUY_ORDER = "VTTC0802U"
#SELL_ORDER = "VTTC0801U"
BUY_ORDER = "VTTC0012U"
SELL_ORDER = "VTTC0011U"
# #실전투자
APP_KEY= "P000000000000000000000000000000L"
APP_SECRET= "f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000="
CANO= "12345678""
# ACNT_PRDT_CD= "01"
# URL_BASE= "https://openapi.koreainvestment.com:9443"
# STOCK_BALANCE = "TTTC8434R"
# CASH_BALANCE = "TTTC8908R"
# BUY_ORDER = "TTTC0802U"
# SELL_ORDER = "TTTC0801U"
# BUY_ORDER = "TTTC0012U"
# SELL_ORDER = " TTTC0011U"
3. 액세스 토큰 발급 함수
def get_access_token():
"""토큰 발급"""
while True:
headers = {"content-type":"application/json"}
body = {"grant_type":"client_credentials",
"appkey":APP_KEY,
"appsecret":APP_SECRET}
PATH = "oauth2/tokenP"
URL = f"{URL_BASE}/{PATH}"
res = requests.post(URL, headers=headers, data=json.dumps(body))
'''
print(res.json())
{
'access_token':'.............................' # 발급토큰
'access_token_token_expired': '2024-00-00 00:00:00', # 유효기간
'token_type': 'Bearer', # API 호출 시, 접근토큰유형 "Bearer" 입력. ex) "Bearer eyJ...."
'expires_in': 86400 # 유효기간(초)
}
'''
time.sleep(0.2)
try:
ACCESS_TOKEN = res.json()["access_token"]
ACCESS_TOKEN_EXPIRED = res.json()["access_token_token_expired"]
return ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED
except:
print("접근 토큰 발급이 불가능합니다")
print(res.json())
time.sleep(1)
▶ 확인코드(koreainvest_auto_main.py)
print("# 1. 시작")
import requests
import json
import time
import ki_config # 개인정보에 대한 별도화일 링크용
##################################################################################################################################
'''
한국투자증권에 접속하기 위한 보안승인 코드 (공통)
'''
##################################################################################################################################
def get_access_token():
"""토큰 발급"""
while True:
headers = {"content-type":"application/json"}
body = {"grant_type":"client_credentials",
"appkey":APP_KEY,
"appsecret":APP_SECRET}
PATH = "oauth2/tokenP"
URL = f"{URL_BASE}/{PATH}"
res = requests.post(URL, headers=headers, data=json.dumps(body))
'''
print(res.json())
{
'access_token':'....' # 발급토큰
'access_token_token_expired': '2024-00-00 00:00:00', # 유효기간
'token_type': 'Bearer', # API 호출 시, 접근토큰유형 "Bearer" 입력. ex) "Bearer eyJ...."
'expires_in': 86400 # 유효기간(초)
}
'''
time.sleep(0.2)
try:
ACCESS_TOKEN = res.json()["access_token"]
ACCESS_TOKEN_EXPIRED = res.json()["access_token_token_expired"]
print('# 2. 접근토큰 발급 완료')
return ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED
except:
print("접근 토큰 발급이 불가능합니다")
print(res.json())
time.sleep(1)
##################################################################################################################################
'''
한국투자증권 주식투자 자동매매 프로그램 시작
'''
APP_KEY = ki_config.APP_KEY
APP_SECRET = ki_config.APP_SECRET
URL_BASE = ki_config.URL_BASE
CANO = ki_config.CANO
ACNT_PRDT_CD = ki_config.ACNT_PRDT_CD
ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED = get_access_token()
# 화면 출력
(tensor37) F:\python>C:/Users/webti/anaconda3/envs/tensor37/python.exe f:/python/STOCKS/Korea_Investment/koreainvest_test2.py
# 1. 시작
# 2. 접근토큰 발급 완료