728x90
์๋ฌ ์ํฉ
์๋ฐ์์ ์ฌ๋ฌ ๋ก๊ทธ์ธ API๋ฅผ ์ด์ฉํด ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ณ ์ ํ ๋ ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๋ค์ด๋ฒ๋ ๋ค ์ ๋๋๋ฐ ์นด์นด์ค UserInfo.java๋ง ์ด๋ฐ ์๋ฌ๊ฐ ๋ด๋ค.
public class KakaoUserInfo implements OAuth2UserInfo {
private Map<String, Object> attributes; // getAttributes()
private Map<String, Object> attributesAccount; // getAttributes().get("kakao_account")
private Map<String, Object> attributesProfile; // attributesAccount.get("profile")
public KakaoUserInfo(Map<String, Object> attributes) {
this.attributes = attributes;
this.attributesAccount = (Map<String, Object>) attributes.get("kakao_account");
this.attributesProfile = (Map<String, Object>) attributesAccount.get("profile");
}
// ๋ฌธ์ ์ (String) ์บ์คํ
๋ถ๋ถ!
@Override
public String getProviderId() {
return (String) attributes.get("id");
}
@Override
public String getProvider() {
return "kakao";
}
// ๋ฌธ์ ์ (String) ์บ์คํ
๋ถ๋ถ!
@Override
public String getEmail() {
return (String) attributesAccount.get("email");
}
// ๋ฌธ์ ์ (String) ์บ์คํ
๋ถ๋ถ!
@Override
public String getName() {
return (String) attributesProfile.get("nickname");
}
}
ํด๊ฒฐ
์ ์ฝ๋์ฒ๋ผ (String)์ผ๋ก ์บ์คํ ๋ฐฉ๋ฒ์ ์ฐ์ง ์๊ณ ์๋ ์ฝ๋์ฒ๋ผ Object๋ฅผ .toString() ํจ์๋ฅผ ์จ์ String์ผ๋ก ๋ณํํด์ฃผ๋ ์๋ฌ๊ฐ ์ฌ๋ผ์ก๋ค.
public class KakaoUserInfo implements OAuth2UserInfo {
private Map<String, Object> attributes; // getAttributes()
private Map<String, Object> attributesAccount; // getAttributes().get("kakao_account")
private Map<String, Object> attributesProfile; // attributesAccount.get("profile")
public KakaoUserInfo(Map<String, Object> attributes) {
this.attributes = attributes;
this.attributesAccount = (Map<String, Object>) attributes.get("kakao_account");
this.attributesProfile = (Map<String, Object>) attributesAccount.get("profile");
}
// toString() ์จ์ ํด๊ฒฐ!
@Override
public String getProviderId() {
return attributes.get("id").toString();
}
@Override
public String getProvider() {
return "kakao";
}
// toString() ์จ์ ํด๊ฒฐ!
@Override
public String getEmail() {
return attributesAccount.get("email").toString();
}
// toString() ์จ์ ํด๊ฒฐ!
@Override
public String getName() {
return attributesProfile.get("nickname").toString();
}
}
์๋ฌ๊ฐ ๋ ์ด์ ๋ (String) ์บ์คํ ์ Object๊ฐ ์ด๋ฏธ String ํํ์ผ ๋๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์นด์นด์ค ๋ก๊ทธ์ธ ๊ฐ์ ๊ฒฝ์ฐ์๋ getProviderId()๋ฅผ ํ์ ๋ id๊ฐ ์ซ์๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฐ๊ฐ int๋ฅผ ๋ฐ๋ก String์ผ๋ก ์บ์คํ ํ ์ ์์ด ClassCastException ์๋ฌ๋ฅผ ๋ธ ๊ฒ์ด๋ค.
.toString() ํจ์๋ Object๊ฐ null๊ฐ๋ง ์๋๋ฉด String ํํ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์ ์บ์คํ ๋ง๊ณ toString()์ ์จ์ฃผ๊ธฐ๋ก ํ์!
๋๊ธ