아이디와 비밀번호를 직접 넘겨주지 않고
유저의 권한 중 넘겨주고 싶은 것만 설정해서 전달해주는 방법.
Resource Owner(유저) -> 브라우저
Resource Server(페이스북)
Client(스파르타코딩클럽) -> 역할군 명칭. 원래는 웹 서버이다.
신뢰하는 client에게 Resource Server가 access_token 이라는 것을 발급해서
client에게 전달한다.
-> 이를 코드 교환(code exchange)단계라고 한다.
authorization_code :
client 와 Resource Server만 이용하는 비밀값
scope (범위) :
어느 범위까지 가져올 것인지에 대한 설정
access_token은 매 요청시마다 함께 하는 토큰이여서
네트워크 상에서 유실될 가능성이 매우 높다.
즉, 토큰이 한 번 털리면 유저 데이터가 털린다.
보완하고자 수명시간을 짧게 두면 로그인을 자주 해야되는 불편한 상황 발생..
따라서, 매번 통신할 때 주고 받는 access_token은 유효기간을 짧게 두되,
access_token을 새롭게 받을 수 있는 refresh_token을 준다.
그러면 매번 통신할 때 털리는 access_token은 1시간만 유효하므로 그나마 안전하고,
새롭게 로그인하기 귀찮을 때는 refresh_token을 쓰면 된다! 라는 결론.
즉, refresh_token은 매 통신마다 보내는 것이 아니고
몰래 브라우저상에 숨겨 놓은 상태에서 access_token은 계속 쨉쨉이(?)로 던지는 방식
REST API키 -> client_id
Redirect URI -> 예전에 설정했던 코드를 돌려주는 것인 callback_url를 설정하는 것
본인이 만들 서버의 callback_url입력
본인이 만든 서버에서 authorization_code를 입력 받아서 코드 exchange를 통해서 access_token을 받아올 위치
카카오 로그인은 client_secret을 기본으로 설정해두지 않는다.
대신 선택으로 제공.
response_type=code
-> 코드라는 것은 authorization_code 방식을 사용한다는 것을 의미한다.