스프링부트+jsp로 배달사이트 만들기-36 카카오아이디로 로그인
2021. 12. 23. 17:29ㆍ스프링부트
https://developers.kakao.com/console/app
애플리케이션 추가하기
동의항목에서 이메일 체크
이메일은 필수동의로 하고 싶은데 안되네요
사이트 도메인 설정하기
Redirect URI 설정, 활성화 on
시크릿 키 발급받기
application.properties에 발급받은 REST API키와 시크릿 키를 등록
##카카오 로그인
spring.security.oauth2.client.registration.kakao.client-id=
spring.security.oauth2.client.registration.kakao.client-secret=
spring.security.oauth2.client.registration.kakao.redirect-uri=http://localhost:8080/login/oauth2/code/kakao
spring.security.oauth2.client.registration.kakao.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.kakao.scope=profile_nickname,account_email
spring.security.oauth2.client.registration.kakao.client-name:Kakao
spring.security.oauth2.client.registration.kakao.client-authentication-method=POST
## kAKAO Provider
spring.security.oauth2.client.provider.kakao.authorization-uri=https://kauth.kakao.com/oauth/authorize
spring.security.oauth2.client.provider.kakao.token-uri=https://kauth.kakao.com/oauth/token
spring.security.oauth2.client.provider.kakao.user-info-uri=https://kapi.kakao.com/v2/user/me
spring.security.oauth2.client.provider.kakao.user-name-attribute=id
OAuthUserInfo 클래스에 카카오를 추가합니다
@Service
public class OAuthUserInfo {
@Autowired
private BCryptPasswordEncoder encodePwd;
public Join createUser(String provider, String username, OAuth2User oauth2user) {
UUID uid = UUID.randomUUID();
String password = encodePwd.encode(uid.toString());
String email = "";
String phone = "";
switch (provider) {
case "google":
email = oauth2user.getAttribute("email");
phone = oauth2user.getAttribute("phone") == null ? "" : oauth2user.getAttribute("phone");
break;
case "naver":
Map<String, Object> response = oauth2user.getAttribute("response");
email = (String) response.get("email");
phone = (String) response.get("mobile") == null ? "" : (String) response.get("mobile");
break;
case "kakao":
Map<String, Object> kakaoAccount = oauth2user.getAttribute("kakao_account");
email = (String) kakaoAccount.get("email");
phone = oauth2user.getAttribute("phone") == null ? "" : oauth2user.getAttribute("phone");
break;
}
phone = phone.replace("-", "");
Join join = new Join();
join.setUsername(username);
join.setPassword(password);
join.setEmail(email);
join.setNickname(username);
join.setPhone(phone);
return join;
}
public String getUsername(String provider,OAuth2User oauth2user) {
String id = "";
switch (provider) {
case "google":
id = oauth2user.getAttribute("sub");
break;
case "naver":
Map<String, Object> response = oauth2user.getAttribute("response");
id = (String) response.get("id");
break;
case "kakao":
id = oauth2user.getAttribute("id").toString();
break;
}
return provider + "_" + id;
}
}
'스프링부트' 카테고리의 다른 글
스프링부트+jsp로 배달사이트 만들기-38 이메일보내기(아이디 찾기,비번찾기) (0) | 2021.12.29 |
---|---|
스프링부트+jsp로 배달사이트 만들기-37 내 정보 수정하기 (0) | 2021.12.27 |
스프링부트+jsp로 배달사이트 만들기-35 네이버아이디로 로그인 (0) | 2021.12.23 |
스프링부트+jsp로 배달사이트 만들기-34 구글아이디로 로그인 (1) | 2021.12.22 |
스프링부트+jsp로 배달사이트 만들기-33 내 포인트, 리뷰 확인 (0) | 2021.12.22 |