티스토리 뷰
네이버의 OpenAPI를 이용하여 네이버 카페에 글을 올리는 등의 작업을 위해서는 액세스 토큰 획득이 선행돼야 한다.
애플리케이션 등록 등의 사전 작업은 네이버 개발자 센터의 내용을 참고하면 된다(아래 링크)
https://developers.naver.com/docs/common/openapiguide/appregister.md
여기에서는 액세스 토큰을 획득하기 위한 파이써너 코드를 게시한다.
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
- 전압
- 오블완
- Hurdles
- Decorator
- 전류
- 전압전류모니터링
- 티스토리챌린지
- 심심풀이
- Innovation&Hurdles
- 치매방지
- Innovations&Hurdles
- 혁신과허들
- image
- Video
- 배프
- Innovations
- 빌리언트
- ServantClock
- 허들
- 혁신
- badp
- 둎
- BSC
- 절연형
- DYOV
- 치매
- 심심풀이치매방지기
- bilient
- arduino
- 아두이노
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함