on
django로 42api 로그인 구현하기
django로 42api 로그인 구현하기
반응형
카카오나 구글 등 몇몇 소셜 사이트에서 자체 api를 제공하는 것처럼 42 도 api를 제공합니다. 이 전에는 jwt(json web token)를 사용했다면, 이번에는 oauth2.0을 이용하여 로
intra.42.fr에서 확인할 수 있습니다.
설정 -API -NEW APP 등록합니다.
이름, 리디렉션 URI(http://localhost)입니다.
8000번 포트에 연결했다면 http://localhost:8000/ 로 설정.
다음 항목(3개) 체크 - submit
웹 사이트 - 공용
범위 - 팀, 슬롯 및 모든 프로젝트 관련 내용 관리 , 사용자 데이터 관리
그러면 다음과 같이 api가 생성됩니다.
이제 원하는 값을 출력해보겠습니다.
REDICT URI 코드입니다. REDICT URI. 인증 URL을 사용합니다.
request한 code를 받아 token을 db에 post 합니다. 이때 grant_type, uid, secret, redirect_uri를 추가로 입력해주어야 합니다. 저는 위 4개의 인자를 환경 변수화해서 사용했습니다.
토큰 으 JSON 변, 액세스 토큰 뽑 DB get GET 합.
get으로 받아온 response를 다시 json으로 변환, 보낼 인자들을 dictionary로 return 합니다.
user_data = { 'id': info_to_json.get("id"), 'login': info_to_json.get("login"), 'email': info_to_json.get("email"), 'staff': info_to_json.get("staff?"), 'image_url': info_to_json.get("image_url") }
json으로 변환하는 과정에서 jsondecodeerror 가 발생할 수 있습니다. (심지어 전날 제대로 동작했던 코드를 다음 날 돌려보았을 때 발생한 경우도 있었습니다.) 이 때, 코드에 오(stack overflow를 참고해보았지만, 크게 도움 되지는 않았습니다.) 저의 경우, code 값이 존재하지 않을 때(request 전)의 처리를 하지 않아 발생했습니다. 그래도 안 된다면 ide를 재시작하거나 재부팅을 추천해 드립니다.
또한 http 상태 코드를 대략 기억하고 있다면, 3번의 결과를 보고 상태를 바로 파악할 수 있습니다.
참고의
from http://it-view.tistory.com/10 by ccl(A) rewrite - 2021-12-29 19:00:54