반응형
안녕하세요 코드짜는헬창 입니다.
이번엔 이전 작업을 통해 받아온 토큰으로 로그인한 유저의 대한
여러가지의 계정 정보를 가져오는것에 대하여 포스팅 하도록 하겠습니다.
1) 일단 API 문서를 읽어 봅니다
* Header에 발급받은 토큰을 전송하면 위 와 같이 로그인한 대상의 정보를 가져올수 있습니다.
2) 코드 구현
public HashMap<String, Object> getUserInfo (String access_Token) {
// 요청하는 클라이언트마다 가진 정보가 다를 수 있기에 HashMap타입으로 선언
HashMap<String, Object> userInfo = new HashMap<>();
String reqURL = "https://kapi.kakao.com/v2/user/me";
try {
URL url = new URL(reqURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 요청에 필요한 Header에 포함될 내용
conn.setRequestProperty("Authorization", "Bearer " + access_Token);
int responseCode = conn.getResponseCode();
System.out.println("responseCode : " + responseCode);
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String result = "";
while ((line = br.readLine()) != null) {
result += line;
}
System.out.println("response body : " + result);
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(result);
JsonObject properties = element.getAsJsonObject().get("properties").getAsJsonObject();
JsonObject kakao_account = element.getAsJsonObject().get("kakao_account").getAsJsonObject();
String nickname = properties.getAsJsonObject().get("nickname").getAsString();
String profile_image = properties.getAsJsonObject().get("profile_image").getAsString();
String email = kakao_account.getAsJsonObject().get("email").getAsString();
userInfo.put("nickname", nickname);
userInfo.put("email", email);
userInfo.put("profile_image", profile_image);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userInfo;
}
* 토큰을 받아오는 메소드는 그대로 두시고 별개의 메소드를 추가 시키는겁니다!
- 해당 메소드를 보시면 인자값으로 토큰을 받아오고 있죠?
@RequestMapping("/login")
public String home(@RequestParam(value = "code", required = false) String code) throws Exception{
System.out.println("#########" + code);
String access_Token = kakaoService.getAccessToken(code);
HashMap<String, Object> userInfo = kakaoService.getUserInfo(access_Token);
System.out.println("###access_Token#### : " + access_Token);
System.out.println("###userInfo#### : " + userInfo.get("email"));
System.out.println("###nickname#### : " + userInfo.get("nickname"));
System.out.println("###profile_image#### : " + userInfo.get("profile_image"));
return "testPage";
}
--------------결과---------------
###userInfo#### : ehowl9509@naver.com
###nickname#### : 안인규
###profile_image#### : http://k.kakaocdn.net/dn/hJcXw/btqCO182Al8/EXzTanki8BIGD0kUsKX7F0/img_640x640.jpg
해당 정보를 잘 가져오고 있습니다.
이만 카카오톡 API 연동을 마치도록 하겠습니다.
연계문서
[OAuth] Spring 카카오톡 Login 연동 (2)
[OAuth] Spring 카카오톡 Login 연동 (1)
참고
https://antdev.tistory.com/37?category=807235
반응형
'개발 > OAuth' 카테고리의 다른 글
[OAuth] Spring 카카오톡 Login 연동 (2) (3) | 2020.07.20 |
---|---|
[OAuth] Spring 카카오톡 Login 연동 (1) (0) | 2020.07.20 |
[OAuth] 카카오 로그인 API 예제! (4) | 2020.06.22 |