파이썬-실습(9) 가변적인 Url 파싱하기, 카카오 인가코드 파싱

파이썬-실습(9) 가변적인 Url 파싱하기, 카카오 인가코드 파싱

제가 제일 힘들었던 부분입니다.

예를들어, www.example.com/?code= 라는 URL로 접속하였을 경우 카카오 로그인을 하고

관련 권한을 수락하면 URL이

www.example.com/?code=AS55geY2vYb13Zxb43 처럼 뒤의 인가 코드가 나오게 됩니다.

이 code가 저에겐 필요했었는데 뭔가 제가 중점을 다른 데에 두어 셀레니움과 urllib등 여러가지 방법을 써봤지만 실패했었습니다.

첫번째 저의 실수는 Redirect URI 였습니다.

현재 저는 EC2안 Flask로 서버를 돌리고 있는데 어이없게도 Redirect URI에 포트번호인 :5000을 빼고 작성하여서 계속해서 오류가 났었습니다.

별거 아닌 문제였지만 이 부분을 눈치채지못하여 한참을 고민하고 시도했었습니다.

여기서 OWNER와 User를 구분짓고 싶어서 kakao_owner_code랑 kakao_friend_code로 나눴습니다.

@app.route('/kakao_friend_code', methods=['GET', 'POST']) def kakao_friend_code(): global user_kakao_code if request.method == 'POST': return render_template('kakao_code.html') else: args_dict = request.args.to_dict() friend_code = args_dict['code'] func.kakao_to_friends_get_friendstokens(friend_code) func.kakao_friends_token() func.delete_item_many(mongo, {}, "alarm", "code") func.insert_item_one(mongo, {"code":str(friend_code)}, "alarm", "code") return render_template('kakao_code.html') @app.route('/kakao_owner_code', methods=['GET', 'POST']) def kakao_owner_code(): global user_kakao_code args_dict = request.args.to_dict() owner_code = args_dict['code'] func.delete_item_many(mongo, {}, "alarm", "code") func.insert_item_one(mongo, {"code":str(owner_code)}, "alarm", "code") return render_template('kakao_code.html')

code를 받고 token을 생성하는 함수들의 전부입니다.

먼저 request.method 같은 경우는 따로 수정하기가 귀찮아서 잠시 둔 상태입니다.

Friend쪽 code를 먼저 보시면 request.args.to_dict()로 정보들을 딕셔너리에 저장하였고

그중 'code'란 값만 따로 뺴서 code로 Token을 발급하고 유효성 체크를 한뒤

code를 잠시 보관하게끔 MongoDB에 넣습니다.

이유는 code가 다른 모듈에서 잠깐 쓰이는데 EC2와 Flask 추후에 NginX도 붙이고 싶었기에

모듈 경로를 지정하는데에 있어서 어려움을 겪을 것 같아 DB에 없데이트 해놨습니다.

이렇게 하게되면 User는 카카오 로그인 URL로 들어가서 로그인과 권한 수락만 해주면

자동으로 Code를 파싱해서 토큰을 만들고 유효성 체크를 해주게 됩니다.

그 후에는 OWNER가 카카오 친구들 불러오기를 하여 업데이트해준다음 메시지를 보내면 끝입니다.

OWNER쪽 코드부분도 비슷하기에 따로 설명은 안하겠습니다.

하지만 이 어플의 큰 단점은 동시접속자가 2명이면 에러가 나는게 문제지만

제가 하고 있는 개인 프로젝트에서는 그 부분까지 신경쓰기에는 너무 많은 내용들이 남아있기에

시간이 남는다면 추후에 수정하기로 했습니다.

from http://cleaning-toolbox.tistory.com/62 by ccl(A) rewrite - 2021-12-17 14:01:23