인프런 커뮤니티 질문&답변
카카오로그인질문
작성
·
411
0
안녕하세요. 제로초님
처음엔 axios로 요청을 보내 처리를 할려고 했는데 cors에러가 뜨는 바람에 a태그를 이용하여 제 로컬서버로 요청을 보내고
로그인을 했습니다. 그런데 서버에서 클라이언트로 해당유저 정보를 보내줘야하는데 어떤식으로 보내줘야 되나요?
//클라이언트
<a href="http://localhost:5000/auth/kakao"> 카카오 계정 </a>
// 서버쪽 응답코드
router.get('/kakao/callback', (req, res, next) =>{
passport.authenticate('kakao',(authError, user, info) => {
console.log(user); // 정보는 정상적으로 넘어오는걸 확인했습니다.
})(req ,res, next)
})
저기 user정보를 어떻게 클라이언트로 보내줘야 될까요??
그리고 추가적으로 로그아웃은 clearCookies로 쿠키를 다 날렸는데도 로그아웃이 안되는데 다른방법이 있나요?
(application탭에서 쿠키내용 확인 시 없음)
크롬브라우저 도메인입력창에 있는 i모양을 클릭해서 쿠키를 지우고 다시 카카오 로그인을 하면 정상적으로 kakao로그인페이지가 뜨는걸 확인했습니다.
답변 5
0
쿠키에 한글을 보낼 때는 encodeURIComponent('노드') 이런식으로 넣어서 보내주셔야 합니다. 받는 쪽에서는 decodeURIComponent(인코딩된값)으로 해독하시면 되고요.
writeHead는 res.send나 res.json보다 위에 적어주셔야 에러가 안 납니다.
쿠키에 사용자 이름을 보내기보다는 connect.sid같이 express-session에서 제공하는 세션쿠키를 보내주시는 게 좋습니다.
0
네 제로초님 말대로 사용자 이름을 쿠키로 보내는 방법을 사용하여 클라이언트로 보낼려고 합니다.
근데 쿠키의 value값을 한글로 전송시 깨짐(?),뭔가 암호화가 되던데 header에 무엇을 심어서 보내줘야 하나요??
(writeHeader 사용시Cannot set headers after they are sent to the client가 뜹니다 )
아님 클라이언트(리액트)에서 따로 해독이 가능한방법이 있나요?
혹시 알고 계신가요? 그리고 cookie에 사용자 이름을 심어서 보내도 되는건지 궁금합니다.(보안상문제)
0
받는 방법은 보통 쿠키로 받습니다. 진짜 자바스크립트로 접근이 필요한 데이터라면 리다이렉트할 때 res.redirect(주소?data=데이터) 이런 식으로 쿼리스트링으로 받을 수는 있습니다.
0
res.redirect(프론트주소)로 설정 한후 화면전환까지 해봤는데 응답으로 사용자정보를 어떻게 넘겨줘야 될지 감이 안옵니다.
a태그로 서버로 요청을 보냈는데 서버의 response값을 받을 수 있나여?
만약 axios를 사용한다면 .then을 사용하여 그 응답을 받으면 되는데 a의 태그의 경우는 어떤방식으로 받으면 될까요?
0
res.redirect(프론트주소)로 리다이렉트하는 방법이 있을 것 같습니다. 이 때 res.cookie를 사용해서 connect.sid 부분은 프론트로 같이 넘겨주어야 서버랑 프론트가 같은 로그인 쿠키를 공유할 것 같네요.
카카오 로그아웃은 카카오 Javascript SDK를 사용해서 로그아웃을 해야합니다.




