tim.l
59
음… 파라메터를 jsonInputString 현태로 보내시는 것 같아요.
String param = "grant_type=authorization_code&client_id="+REST_API_KEY+"&redirect_uri="+REDIRECT_URI+"&client_secret="+CLIENT_SECRET+"&code="+code;
이런 형태로 구성하셔서 body data에 전달 하셔야합니다.
[rest api 예제] java (spring boot) - 카카오 로그인, 카카오 친구목록 조회, 메시지 발송
String param = "grant_type=authorization_code&client_id="+REST_API_KEY+"&redirect_uri="+REDIRECT_URI+"&client_secret="+CLIENT_SECRET+"&code="+code;
String rtn = httpCallService.Call(Const.POST, TOKEN_URI, Const.EMPTY, param);
public String Call(String method, String reqURL, String header, String param) {
String result = "";
try {
String response = "";
URL url = new URL(reqURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(method);
conn.setRequestProperty("Authorization", header);
if(param != null) {
System.out.println("param : " + param);
conn.setDoOutput(true);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
bw.write(param);
bw.flush();
}
int responseCode = conn.getResponseCode();
System.out.println("responseCode : " + responseCode);
System.out.println("reqURL : " + reqURL);
System.out.println("method : " + method);
System.out.println("Authorization : " + header);
InputStream stream = conn.getErrorStream();
if (stream != null) {
try (Scanner scanner = new Scanner(stream)) {
scanner.useDelimiter("\\Z");
response = scanner.next();
}
System.out.println("error response : " + response);
}
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while ((line = br.readLine()) != null) {
result += line;
}
System.out.println("response body : " + result);
br.close();
} catch (IOException e) {
return e.getMessage();
}
return result;
}
client_secret은 설정안해도 된다고하는데 빼도 상관없을까요?
빠른 답변 감사합니다.
Call 메소드 보면
위에서
String rtn = httpCallService.Call(Const.POST, TOKEN_URI, Const.EMPTY, param);
위와 같이 호출하던데
header는 null로 보내도 되나요?
그리고 혹시 정상적으로 호출이된다면 rtn에 어떤 값이 출력되나요?
지금은 html소스가 나오는데…
param : grant_type=authorization_code&client_id=a0641350ab6b6afac7ba8fb30d11913f&redirect_uri=http://test1.tirenara.net/test.do&code=GAR6-mwlIyAVNx503kEGOSYNLmhjKceu6tOUiG2u73PlV8LQxkT-NmiwieCv4C1qdM-usgo9cxgAAAF9K8tpUg
responseCode : 200
reqURL : https://kauth.kakao.com/oauth/authorize
method : POST
Authorization : null
response body : <!doctype html> Kakao Account @charset “UTF-8”;.old-style div[data-role=page]{display:none}.old-style div[data-role=page].km-page-active{display:block}.old-style div[data-role=modal]{display:none}.old-style .km-email-recommend{display:none;overflow-y:auto;z-index:100;width:438px;padding:10px 0;margin:0 30px;border:1px solid #b6b6b6;max-height:180px;border-radius…이하생략
Call메소드에서 println 출력 값입니다.
tim.l
63
reqURL을 인가요청으로 잘못 기재하신듯해요. 토큰요청 주소로 설정해보시겠어요?
https://kauth.kakao.com/oauth/token
토큰요청은 헤더값을 가지고 하는게 없습니다. Content-Type정도 세팅해주시면되는데 request 가 맞다면 생략해도됩니다.
REST API | Kakao Developers REST API
안녕하세요
reqURL과 인증서 설치 완료했습니다.
https://www.tirenara.net/test.do
운영서버 위 url에서 테스트가 가능한데 정상 작동하는지 확인 좀 부탁드립니다.
그리고 최초 접속 시 로그인 유무 확인을 하는데 맞나요?
추가로
- 퍼머링크 발급 받은 후 qr 스캔
- 위 url 접속
- 해당 토큰으로 유저 정보 호출 (카카오)
- 호출 된 정보로 홈페이지 자동 가입 (타이어나라)
위 처럼 프로세스 진행되면 QR로그인 완성되는건가요?
빠진 거 있는지 확인 부탁드립니다
tim.l
65
네, 접속해보니 토큰 정상 발급되었네요.
토큰으로 사용자 정보조회하여 회원가입 처리 해주시면 될 것 같습니다.
최초 접속 시 로그인 유무 확인을 하는데 맞나요?
네, 맞습니다. (퍼머링크 발급 시, 카카오 톡으로 인증하므로 따로 로그인은 필요 없습니다.)
위 처럼 프로세스 진행되면 QR로그인 완성되는건가요?
네, 맞습니다.
발급받은 퍼머링크로 QR코드 만드셔서 오프라인매장에 부착하시고
오프라인매장 방문자가 핸드폰으로 QR 스캔하면 기재해주신 순서로 가입하게됩니다.
tim.l
67
카카오싱크로 가입이 구현되면 담당자분이 확인 후, 발급해주시는 것으로 알고 있습니다.
가입까지 구현되면 댓글 주시겠어요?
cc. @anon79681667
지금 상태에서 홈페이지 가입만 시키면 된다는거죠?
다시 회신드리겠습니다.
2개의 좋아요
@tim.l
{
“id”:2001998225,
“connected_at”:“2021-11-22T01:46:24Z”,
“synched_at”:“2021-11-22T01:46:24Z”,
“properties”:{
“nickname”:“타이어나라”
},
“kakao_account”:{
“profile_nickname_needs_agreement”:false,
“profile”:{
“nickname”:“타이어나라”
},
“has_email”:true,
“email_needs_agreement”:false,
“is_email_valid”:true,
“is_email_verified”:true,
“email":"tirenarakorea@naver.com”,
“has_phone_number”:false,
“phone_number_needs_agreement”:false
}
}
질문있습니다.
이름을 유저 정보중에서 이름을 저장 할 때
properties name과 profile name이 차이가 있을까요?
tim.l
72
properties 항목은 디벨로퍼스앱에 저장된 값으로 ‘사용자 정보 저장하기’ 기능으로 관리합니다.
사용자 정보 저장하기 REST API | Kakao Developers REST API
kakao_account (profile) 항목은 카카오 계정의 실시간 정보이므로 kakao_account >profile> nickname 을 사용하시는 것이 좋을 것 같긴 합니다.
참고 부탁드려요.
@anon79681667
안녕하세요 퍼머링크 발급 부탁드립니다.
https://www.tirenara.net/permalink.do
최초 접속 : 회원가입 후 자동 로그인
이후 접속 : 자동 로그인
안녕하세요! @tirenarakorea
퍼머링크 발급 완료되어 메시지로 전달 드렸습니다.
메시지 확인 부탁드려요
@anon79681667
안녕하세요
혹시 퍼머링크 뒤에 파라미터 붙여서 사용 가능한가요?
https://pf-link.kakao.com/qr/_GlSVK/pages/_Kq
위 퍼머링크를 발급받았는데
파라미터를 붙여서 회원 가입할 때 사용하려고합니다.
안녕하세요!
넵, 해당 퍼머링크에 파라메터 붙여서 사용하시면 됩니다!
파라메터 사용은 아래 가이드 참고 부탁드려요.
고맙습니다