2. 스프링 시큐리티 [깃허브 OAuth 로그인 이슈]
원인
깃허브는 google, facebook과 다르게 이메일을 “반드시” 제공하지는 않는다.
위의 깃허브 프로필을 보면, 사용자가 이메일 제공 거부로 설정해놨을 경우, oauth 요청을 해도 email이 null로 온다.
모든 사용자가 이메일 제공 동의를 했을리도 없는데, 내 api는 이메일의 유일성이 필요하다.
해결책
깃 허브가 제공하는 정보 중, 유일한 값을 찾아보면 ‘id’라는 것이 있다.
만약 이메일 동의를 안할 경우에는 null이 오므로 [email protected]이라는 가상의 이메일을 만든다.
null이 아니면 그대로 이메일을 가져다 쓰면 된다.
public class GitHubUserInfo implements OAuth2UserInfo {
private Map<String, Object> attributes;
@Override
public String getEmail() {
int id = (int) attributes.get("id");
return attributes.get("email") == null ? id + "@github.com" : (String) attributes.get("email");
}
}
Author And Source
이 문제에 관하여(2. 스프링 시큐리티 [깃허브 OAuth 로그인 이슈]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dasd412/2.-스프링-시큐리티-깃허브-OAuth-로그인-이슈저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)