현재 https://kapi.kakao.com/v2/user/me주소로 accesstoken을 이용해서 post하면 아래처럼 response body가 나옵니다.
response body : {“id”:비공개,“properties”:{“nickname”:“ㅁㄴㅇㄹㅁㄴㅇㄹ”},“kakao_account”:{“profile_needs_agreement”:false,“profile”:{“nickname”:"“ㅁㄴㅇㄹㅁㄴㅇㄹ”},“has_email”:true,“email_needs_agreement”:false,“is_email_valid”:true,“is_email_verified”:true,“email”:“mabobnara@naver.com”,“has_birthday”:true,“birthday_needs_agreement”:true,“has_gender”:true,“gender_needs_agreement”:true}}
제가 필요한 정보는 성별, 이메일, 생년월일 인데요.
has_gender:true
gender_needs_agreement:true
has_birthday:true
이렇게 설정되어 있으면 가져와야 되는것으로 알고 있는데 정보를 못가져옵니다.
혹시 몰라서 계정설정에서 제 계정에 생년월일, 성별을 입력하지 않았나 해서 확인했는데 입력되어 있었습니다.
어떤부분이 오류인지 확인좀 부탁드립니다.
감사합니다.
//
public HashMap<String, Object> getUserInfo (String reqUrl, String access_Token) {
HashMap<String, Object> userInfo = new HashMap<>();
String reqURL = reqUrl;//“https://kapi.kakao.com/v2/user/me”;
try {
URL url = new URL(reqURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(“POST”);
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 email = kakao_account.getAsJsonObject().get("email").getAsString();
String gender = kakao_account.getAsJsonObject().get("gender").getAsString(); ← Null 나는 부분!
String birthday = kakao_account.getAsJsonObject().get("birthday").getAsString(); ← Null 나는 부분!
userInfo.put("nickname", nickname);
userInfo.put("email", email);
userInfo.put("element", element);
} catch (IOException e) {
e.printStackTrace();
}
return userInfo;
}