https://velog.io/@holy38/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0%EC%99%80-%EA%B5%AC%EA%B8%80-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84
-->일반 로그인과 구글 로그인 구현했던 글
https://chb2005.tistory.com/183
-->구글뿐만 아니라 카카오, 네이버, 페이스북 로그인 가이드
https://chb2005.tistory.com/183
-->어플리케이션을 멤버 정보를 제공해주는 각 소셜 사이트에 등록(InpaDev님 티스토리)
OAuth2 인증절차에 관한 부가설명자료 두개
유용한 짤을 찾아 Security두번째 글인 여기에 붙여놓겠다.
위 두사진을 대조해보면 흐름을 파악할 수 있다.
그럼이제 본격적인 기능 구현을 들어가보자.
위 사진에서 보듯 OAuth2UserInfo 라는 인터페이스를 만듦으로서 일관된 방식으로 데이터를 받고 DB에 저장할 수 있다.
위 세종류의 OAuth2UserInfo 구현체들을 보면 똑같이 이름을 가져오는 함수라도
1. 구글은 (String) attributes.get("name");
2. 카카오는 (String) ((Map) attributes.get("properties")).get("nickname");
3. 네이버는 (String) attributes.get("name");
이렇게 제각각으로 받아온다 이걸 Service에서 이용할때 제각각 다른방식(위3가지방식)을 기억할 필요없이 그냥
이렇게 받아준다면 편하지 않겠는가?