[aws] 네이버 서비스 등록
네이버 서비스 등록
1. 네이버 로그인 API 신청
구글에 비해 상대적으로 UI도 깔끔하고 쉬운 편입니다.
2. 야믈파일 설정
spring:
security:
oauth2:
client:
registration:
naver:
client-id: secret
client-secret: secret
client-name: Naver
redirect-uri: {baseUrl}/{action}/oauth2/code/{registrationId}
authorization-grant-type: authorization_code
scope: name, email, profile_image
provider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorize
token-uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user-name-attribute: response
3. 스프링 시큐리티 등록 설정
기존의 CustomOAuth2UserService
에서 OAuthAttributes
의 정적 팩토리 메소드를 호출하기 때문에 OAuthAttributes
만 바꾸면 됩니다.
소셜 로그인 완료 후 돌아온 응답이 구글과 네이버가 상이하기 때문에 이런 과정을 거쳐야만 합니다.
아래처럼 정적 팩토리 메소드를 호출 시 registratinId
가 naver
인지 확인하면 됩니다.
public static OAuthAttributes of(String registrationId,
String userNameAttributeName,
Map<String, Object> attributes) {
if ("naver".equals(registrationId)) {
return ofNaver("id", attributes);
}
return ofGoogle(userNameAttributeName, attributes);
}
private static OAuthAttributes ofNaver(String userNameAttributeName,
Map<String, Object> attributes) {
Map<String, Object> response = (Map<String, Object>) attributes.get("response");
return OAuthAttributes.builder()
.name((String) response.get("name"))
.email((String) response.get("email"))
.picture((String) response.get("profile_image"))
.attributes(response)
.nameAttributeKey(userNameAttributeName)
.build();
}
댓글남기기