URL start = new URL(“Kakao Account”);
HttpURLConnection connection = (HttpURLConnection)start.openConnection();
connection.connect();
System.out.println(“success”);
이렇게 실행하면 안되고,
try {
Desktop.getDesktop().browse(new URI(“Kakao Account”));
} catch (IOException e){
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
이렇게 창을 띄워서 실행하면 제대로 실행이 됩니다.
제가 뭔가 잘못 짠거같은데 맨위 코드가 저렇게 짠 이유가 창을 열지 않고도 호출을 하고 싶은데 잘 안되네요… 좋은 방법 추천 바랍니다.ㅠㅠ
참고로
try {
URL start = new URL(“Kakao Account”);
HttpURLConnection connection = (HttpURLConnection)start.openConnection();
connection.connect();
} catch (Exception e){
e.printStackTrace();
}
이렇게 예외처리 해도 에러는 안뜹니다.
그리고 할 줄 아는게 java밖에 없어서 java(spring)으로만 구현 하려고 합니다…
제 설명이 부족한 것 같아서 더 말씀드리자면 browse()저거 코드로 실행하거나 직접 인터넷 창에 주소 입력 후 redirect uri 로 access_token 받아서 메세지 전송은 성공하였습니다. spring의 scheduled annotation cron타입으로 실행(return타입 void여함, parameter 없어야함)하는데, 창 열리지 않고 인가코드 생성 부분 호출을 하는 방법을 모르겠습니다. 제 앱 ID는 563041입니다.
안녕하세요.
브라우저 없이 카카오 로그인 기능을 사용하실 수는 없습니다.
카카오 로그인은 OAuth2.0 기반의 소셜 로그인 서비스 입니다.(네이버, 페이스북, 트위터 등)
중요한건 OAuth2.0 흐름에서 redirect uri를 통한 사용자 유효성 검사가 필수 인데 이 것을 위해서는 브라우저를 사용 하셔야만 합니다.
답변 대단히 감사합니다.
추가 질문이 있는데요, {“msg”:“failed to parse parameter. name=template_object, stringToParse=-, paramString=-, paramStringAlias=null”,“code”:-2} 이거는 너무 길어서 나는 에러인가요?
메시지 보내기 시 발생한 오류 같습니다.
전송하신 파라메터가 잘못 된 경우 위 오류가 발생하는데요
template_object 값을 잘못 보냈거나 없는 경우 발생합니다
x-www-form-urlencoded 형태로 전송하셨는지 확인 부탁드려요~
형태는 x-www-form-urlencoded 맞게 했고, 길이를 줄여도 에러가 나서… 길이 문제는 아닌거 같네요. (머쓱)
근데 text에 밑에처럼 넣어서 전송하니 저 에러가 뜨는데 왜 인지 알 수 있을까요?
2022년 05월 03일 17시 37분 00초
- 안녕
newline 처리에 이유가 있을 것 같은데요, 실제 사용하신 코드 공유 부탁드려요
String sg = "";
FileReader reader = new FileReader("D:\\result.txt");
int ch;
// int size=0;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
sg=sg+(char)ch;
// size++;
}
// sg=sg.replaceAll(" “, “”);
sg=sg.replaceAll(”\n", “”);
// sg=sg.replaceAll("\.", “:”);
reader.close();
URL kakaourl = new URL(“https://kapi.kakao.com/v2/api/talk/memo/default/send”);
HttpURLConnection httpConn = (HttpURLConnection) kakaourl.openConnection();
httpConn.setRequestMethod(“POST”);
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpConn.setRequestProperty("Authorization", "Bearer "+access_Token);
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
System.out.println(sg.toString());
writer.write("template_object={\n \"object_type\": \"text\",\n \"text\": \""+sg+"\",\n \"link\": {\n \"web_url\": \"http://localhost:8080\",\n \"mobile_web_url\": \"http://localhost:8080\"\n },\n \"button_title\": \"바로가기\"\n }");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String kakaoresponse = s.hasNext() ? s.next() : "";
System.out.println(kakaoresponse);
말씀대로 sg=sg.replaceAll("\n", “”); ← 이거 넣어서 한줄로 만들어서 보내니 됩니다.
그래서 \n을 \r, \n\r, \r\n 로 바꿔서 보내도 봤는데 이거는 실패하더라고요.
일단 저 코드 자체는 String sg에 result.txt의 내용을 넣어서 전송하는 코드입니다.
result.txt에는
2022년 05월 03일 20시 03분 00초
- 첫번째
- 두번째
- 세번째
- 네번째
- 다섯번째
이런 식으로 되어있습니다.
어떻게 해야 하나요?ㅠ
sg=sg.replaceAll("\n", “\n”); //\두개인데 여기 댓글에는 한개처럼 표시되네요?
로 하니
2022년 05월 03일 20시 03분 00초n1. 첫번째n2. 두번째n3. 세번째n4. 네번째n5. 다섯번째
이런식으로 와서
sg=sg.replaceAll("\n", “\\n”); //이거는 \ 4개
로 하니 제대로 오네요.
대단히 감사합니다.