사용자 관리 - 로그인
- 사용자 계정 정보를 얻어오기 전에 사용자가 제일 먼저 해야할 일은 당연히 로그인입니다.
- [사용자 관리]-[로그인] 탭으로 이동합니다.
https://developers.kakao.com/docs/restapi/user-management#로그인
- 우리는 따로 카카오톡 로그인 버튼을 만들지는 않습니다.
[제출]버튼을 누르면 연결되도록 만들 것입니다.
- 해당 로그인 기능은 OAuth 2.0을 지원합니다.
OAuth에 대해서는 설명하지 않도록 하겠습니다.
다른 사이트에서 해당 사이트와 상관없는 카카오 로그인, 페이스북 로그인, 구글 로그인 등을 본 적이 있을 겁니다.
이러한 제 3자의 인증을 가능하게 하도록 하는 표준이라고 생각하시면 됩니다.
참고)
OAuth란? https://ko.wikipedia.org/wiki/OAuth
생활코딩 - OAuth 2.0 : https://www.opentutorials.org/course/3405
- [Request]는 우리가 서버로 자원을 요청하는 방식에 대해 나타낸 것입니다.
- 'POST', 'GET', 'PUT', 'DELETE' 등 - 자원을 어떻게 요청할 지를 나타내는데 여기서 'GET' 방식으로 요청하라고 말하는 것입니다.
- 'Host'는 서버의 호스트 주소가 'kauth.kakao.com'이라는 이야기입니다.
- 'client_id'는 우리가 발급받은 REST API 키 값을 대입하라고 나와있습니다.
- 'redirect_url'은 플랫폼 설정해줄 때 보았던 주소입니다.
- 'response_type'은 'code'로 고정하라고 하였습니다.
- 나머지 키 값들은 필수 요소는 아니니 일단 스킵합니다.
views.py 수정
- 위의 정보를 토대로 실질적으로 코드를 짜봅시다.
- [blogapp]-[views.py]에서 oauth 함수를 만듭니다.
- oauth 함수를 왜 만들까요?
- 우리가 어떤 식으로 카카오에 요청을 했다고 칩시다.
그러면 그 응답[Response]을 'redirect_uri'로 보낸다고 적혀있습니다.
즉, 우리가 플랫폼 설정할 때 적어주었던 주소인 'http://127.0.0.1:8000/oauth'로 응답을 한다는 것입니다. - 이에 대한 답을 받기 위해서 뷰와 url을 추가하도록 하겠습니다.
def oauth(request): return redirect('blogMain')
- 일단 당장은 어떤 처리를 할지 정해지지 않았으므로 단순히 호출이 되면 블로그 메인 페이지로 가도록 설정하였습니다.
urls.py 수정
- 위에서 얘기한 대로 url을 추가합니다.
path('oauth/', blogapp.views.oauth, name='oauth'),
views.py 수정
- detail 함수를 수정하도록 합니다.
- uri로의 요청은 다음과 같이 합니다.
- Host와 위의 문서에서 요구하는 대로 작성하면 됩니다.
다음 uri로 요청을 해보겠습니다. -
https://kauth.kakao.com/oauth/authorize?client_id=187fc792a19f9586952c9a8527459053&redirect_uri=http://127.0.0.1:8000/oauth&response_type=code&scope=talk_message
- 현재 작성된 detail 함수입니다.
login_request_uri = 'https://kauth.kakao.com/oauth/authorize?' client_id = '187fc792a19f9586952c9a8527459053' redirect_uri = 'http://127.0.0.1:8000/oauth' login_request_uri += 'client_id=' + client_id login_request_uri += '&redirect_uri=' + redirect_uri login_request_uri += '&response_type=code'
Response
- 위에서는 요청(Request)을 하였다면 그 요청에 대한 응답(Response)를 받아야 합니다.
- 'redirect_uri' 주소로 'code' 값을 얻어오라고 써있습니다.
- 따라서 우리는 oauth 함수를 수정해야합니다.
- 요청할 때에 GET 방식으로 요청하였으므로 GET 방식으로 'code' 값을 받아올 수 있도록 수정합니다.
적용 확인
- 서버를 구동하고, 정상적으로 실행되는지 확인합니다.
- 댓글을 입력하고, 제출버튼을 누릅니다.
- 카카오톡 로그인 화면이 나타납니다.
- 로그인해봅시다.
- 이전에 입력하였던 앱 이름과 정보 수집 제공을 위한 동의를 물어봅니다.
- 우리는 닉네임과 프로필 사진만 설정하였으므로 다음 내용만 나타납니다.
- 동의하고 넘어갑니다.
- 동의 버튼을 누르면 블로그 메인 화면이 나타납니다.
- 콘솔 창에는 다음과 같이 'code' 값을 불러온 것을 확인할 수 있습니다.