티스토리 뷰
네이버의 OpenAPI를 이용하여 네이버 카페에 글을 올리는 등의 작업을 위해서는 액세스 토큰 획득이 선행돼야 한다.
애플리케이션 등록 등의 사전 작업은 네이버 개발자 센터의 내용을 참고하면 된다(아래 링크)
https://developers.naver.com/docs/common/openapiguide/appregister.md
사전 준비 사항 - Open API 가이드
사전 준비 사항 네이버 오픈API를 사용하려면 먼저 네이버 개발자 센터에서 애플리케이션을 등록하고 클라이언트 아이디와 클라이언트 시크릿을 발급받아야 합니다. 클라이언트 아이디와 클라
developers.naver.com
여기에서는 액세스 토큰을 획득하기 위한 파이써너 코드를 게시한다.
def GetAccessToken(self, params=None):
# Reference Link : https://junbenchmarking.tistory.com/373
naver_redirect = cConstants.REDIRECTURI_NAVER
invalidParam = False
if not params:
naver_cid = d.get('ClientID')
naver_csec = d.get('ClientSecret')
id = #ID 직접 입력
pw = #비번은 직접 입력
state = cConstants.NAVERSTATE
else:
naver_cid = params.get('Navercafe_cid')
naver_csec = params.get('Navercafe_csed')
id = params.get('Navercafe_id')
pw = params.get('Navercafe_pw')
state = params.get('Navercafe_state')
if not naver_cid:
print('[!!!] No cID')
invalidParam = True
if not naver_csec:
print('[!!!] No cSEC')
invalidParam = True
if not id:
print('[!!!] No ID')
invalidParam = True
if not pw:
print('[!!!] No PW')
invalidParam = True
if not state:
state = "SOMESTATE"
if invalidParam:
self.AccessToken = None
return
webDriver = bWebControl.GetWebDriver()
webDriver = bWebControl.AccessPage(webDriver, cConstants.URL_NAVERLOGIN)
if not webDriver: return;
webDriver.execute_script("document.getElementsByName('id')[0].value=\'" + id + "\'")
# time.sleep(1)
webDriver.execute_script("document.getElementsByName('pw')[0].value=\'" + pw + "\'")
# time.sleep(1)
param11 = {
'TagType': "xpath",
'TagValue': "//*[@id='log.login']"
}
elem11 = bWebControl.GetElement(webDriver, param11)
bWebControl.TreatClick(webDriver, elem11, 3)
code = None
access_token = None
# code get
if not code:
req_url1 = f'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id={naver_cid}&redirect_uri={naver_redirect}&state={state}'
print(req_url1)
webDriver = bWebControl.AccessPage(webDriver, req_url1, 3)
if not webDriver: return;
try:
param12 = {
'TagType': "xpath",
'TagValue': '//*[@class="btn_unit_on"]'
}
elem12 = bWebControl.GetElement(webDriver, param12)
bWebControl.TreatClick(webDriver, elem12, 2)
except Exception as e:
#print("[?-92]", str(e))
pass
resUrl = webDriver.current_url
# 'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=DyHjd5fFNiocraAuT5tR&redirect_uri=https://www.bilientsvc.net/NaverAPI/callback.php&state=SOMESTATE'
index1 = resUrl.find("code=")
tempUrl1 = resUrl[index1+5:]
index2 = tempUrl1.find("&")
naverCode = tempUrl1[0:index2]
print("[Code]", naverCode)
#access token 발급
if not access_token:
#login_token
# base64 encode get
clientConnect = naver_cid + ":" + naver_csec
clidst_base64 = base64.b64encode(bytes(clientConnect, "utf8")).decode()
req_url2 = f'https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id={naver_cid}&client_secret={naver_csec}&redirect_uri={naver_redirect}&code={naverCode}&state={state}'
webDriver = bWebControl.AccessPage(webDriver, req_url2)
if not webDriver: return;
response1 = webDriver.page_source
#print(response1)
param13 = {
'TagType': "html",
'TagValue': "body"
}
elem1 = bWebControl.GetElement(webDriver, param13)
response11 = elem1.text
index1 = response11.find('{')
index2 = response11.find('}')
response2 = response11[index1:]
json1 = json.loads(response2)
print(json1)
# json1 = { 'access_token', 'refresh_token', 'token_type', 'expires_in'}
try:
self.AccessToken = json1['access_token']
except:
self.AccessToken = '---'
webDriver.quit()
code = None
access_token = None
# code get
return 1
반응형
'SWDesk' 카테고리의 다른 글
[Python] 시간 차이를 구하는 함수 with datetime (0) | 2023.08.26 |
---|---|
[Python] 날짜 및 시간 함수 : datetime (0) | 2023.08.26 |
[Python] 주식 자동 주문 : 매수 주문 처리 (0) | 2023.07.07 |
[Python] 주식 자동 주문 : 매도 주문 처리 (0) | 2023.06.30 |
[Python] 주식 자동 주문 : 과거 주가 데이터 수집 (0) | 2023.06.23 |
반응형
250x250
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- BSC
- Innovations
- 심심풀이치매방지기
- Innovations&Hurdles
- 전압전류모니터링
- ServantClock
- 허들
- badp
- 치매
- 심심풀이
- 아두이노
- 배프
- 치매방지
- 빌리언트
- bilient
- 절연형
- 혁신
- DYOV
- 혁신과허들
- Decorator
- 둎
- Video
- 전류
- 오블완
- image
- Innovation&Hurdles
- 전압
- arduino
- Hurdles
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함