반응형
*만약 클라이언트 개발자가 따로 있다면 클라이언트 쪽에서 access_token을 전달해주기 때문에 이 포스팅부터 수행하면 된다.
만약 혼자 구현해야한다면 아래 글부터 진행하여 테스트할 수 있다.
카카오 로그인 API 구현(1)
https://suyeoniii.tistory.com/79
이제 access_token을 받았으니, 이 token을 이용해서 카카오 서버에서 사용자 정보(닉네임, 이메일 등)를 받아올 수 있다.
이 정보를 이용하여 자체적으로 회원가입을 진행하면 된다.
만약 받은 정보가 이미 DB에 들어가있다면 로그인 과정을 진행하면 된다.
Access_Token에서 사용자 정보 조회
사용자 정보 가져오기
GET 또는 POST방식으로
Header에 Authorization: Bearer {ACCESS_TOKEN}을 넣어주면 된다고 한다.
*Bearer뒤에 공백 넣어야하는 것 주의
public void createKakaoUser(String token) throws BaseException {
String reqURL = "https://kapi.kakao.com/v2/user/me";
//access_token을 이용하여 사용자 정보 조회
try {
URL url = new URL(reqURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "Bearer " + token); //전송할 header 작성, access_token전송
//결과 코드가 200이라면 성공
int responseCode = conn.getResponseCode();
System.out.println("responseCode : " + responseCode);
//요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기
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);
//Gson 라이브러리로 JSON파싱
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(result);
int id = element.getAsJsonObject().get("id").getAsInt();
boolean hasEmail = element.getAsJsonObject().get("kakao_account").getAsJsonObject().get("has_email").getAsBoolean();
String email = "";
if(hasEmail){
email = element.getAsJsonObject().get("kakao_account").getAsJsonObject().get("email").getAsString();
}
System.out.println("id : " + id);
System.out.println("email : " + email);
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
이전 글에서 API 통신했던 코드를 조금 변형하여, header를 넣어주고, 사용자 정보 JSON을 파싱해주었다.
200코드가 반환되면, 성공적으로 access_token에서 사용자 정보가 조회된다.
이후, 받은 사용자 정보를 이용하여 자체적으로 회원가입 또는 로그인을 진행하면 된다!
반응형