오늘은 네이버 로그인 API를 등록해 보았다.
저번에 고생하면서 확장성 있게 만들어 놨기 때문에 네이버 로그인 API는 상당히 쉽게 등록할 수 있었다.
먼저 네이버 로그인 뒤 developers.naver.com/apps/#/register이곳에 방문하여 서비스를 등록해줘야 한다.
내 경우는 필요한 것이 닉네임과 이메일 주소밖에 없기 때문에 필수 항목에 이메일과 별명만 체크하였다.
그리고 아래의 서비스 URL 은 자신의 도메인(여기서는 개발중이므로 localhost:8080 으로 등록)과 Callback URL을 등록해준다.
Callback URL은 구글 로그인 API를 등록할떄의 Redirection URL과 같은 역할이다.
등록을 마치고 나면 이렇게 ClientID와 Client Secret 키를 얻을 수 있다. 이제 프로젝트로 돌아가서 등록해주어야 한다.
application-oauth.properties에는 다음과 같은 항목을 추가한다.
# registration
spring.security.oauth2.client.registration.naver.client-id={CLIENT ID}
spring.security.oauth2.client.registration.naver.client-secret={CLIENT SECRET}
spring.security.oauth2.client.registration.naver.redirect-uri={baseUrl}/{action}/oauth2/code/{registrationId}
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.naver.scope=name,email
spring.security.oauth2.client.registration.naver.client-name=Naver
# provider
spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize
spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token
spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me
spring.security.oauth2.client.provider.naver.user-name-attribute=response
이대로 등록해주었다. 여기서 redirect-url의 경우 {registrationID}는 naver로 넘겨진다.
OAuthAttributes 클래스에는 네이버로 로그인 시만 걸러주는 if문을 추가해주면 된다.
ofNaver 메서드는 ofGoogle과 매우 유사하다. attribute에서 response를 가져와 사용하는데, 이는 네이버 로그인 API의 로그인 회원 결과 JSON의 형태와 관련이 있다.
네이버 로그인 API 를 이용해 로그인 할 경우 사용자의 정보가 JSON형태로 넘어오게 된다. 이 JSON에서 최상위 필드는 3개로 각각 resultCode, message, respone 이다. 그리고 reponse 필드(객체) 안에 사용자의 정보가 있다. 이를 받아와 Map<String, Object> 타입의 객체에 저장하게 되고, 여기서 정보를 꺼내어 Attributes 클래스를 생성한다.
이제 내가 생각했던 웬만한 기능들은 모두 구현했다. 그러나 지금 가장 큰 문제는 뷰 이다.
페이지가 정말 처참한 몰골을 하고 있다. 기능을 모두 잘 작동하지만 이래서는 나조차 쓰기 싫다...
그래서 며칠간 공부 후에 뷰 영역을 적어도 사람이 보기 좋은 수준으로 개선하려고 한다. 배포는 그 후에~
'Projects > matjipfind' 카테고리의 다른 글
AWS에 배포하기 위해 인스턴스 만들고 설정하기 (0) | 2021.02.02 |
---|---|
전체적인 레이아웃 개선 (0) | 2021.02.01 |
중복 코드 제거, MySQL 연동 (0) | 2021.01.22 |
유저 키워드 기억 기능, 기타 버그 수정 (0) | 2021.01.21 |
Ajax를 이용한 최근키워드 실시간 DB저장 기능 (0) | 2021.01.20 |
댓글