kakao API를 통해 kakao_access_token 이랑 kakao_refresh_token 와 같은 두 가지의 token을 받았는데
3가지 중에서 어떤 토큰을 활용할지 고민을 했었다
OAuth와 춤을 이라는 사이트에서 글을 읽어보는데
소셜로그인을 통해 받은 kakao_access_token은 일종의 방문증이고
우리 자체 서버에서 발급해준 flix_access_token이야 말로 그 회사의, 서비스의 주체적인 권한을 가진 (?) 사원증이라고 비유하는 표현을 보니 뭔가 마음에 와닿았다..!
꼭 이런 내용으로 논의한거는 아니고... 여러 다른 조언들을 받긴 했지만 너무 늦게 기록하는 바람에 기억이 잘 안난다
로그인기능을 맡아주신 장호님과 상의한 결과,
kakao_access_token이랑 flix_access_token을 비교할게 아니라
이러한 과정을 통해,
headers영역에 추가
kakao Developer 페이지에서 설명을 볼 수 있다
// JavaScript SDK 적용
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>
<script>
// SDK 초기화
Kakao.init("발급받은 javascript key");
// SDK 초기화 여부 판단
Kakao.isInitialized();
</script>
// Login 페이지 화면 렌더링되면 localStorage내용 비우기
useEffect(() => {
localStorage.clear();
});
// 카카오 로그인버튼 누르면 실행할 함수 선언
const handleKakao = () => {
Kakao.Auth.login({
success: function (authObj) {
fetch(KAKAO_URL, {
method: "POST",
headers: {
Authorization: authObj.access_token,
},
})
.then((res) => res.json())
.then((res) => {
localStorage.setItem("kakao_access_token", authObj.access_token);
localStorage.setItem("kakao_refresh_token", authObj.refresh_token);
localStorage.setItem("flix_access_token", res.flix_access_token);
if (res.flix_access_token) {
alert("Flix의 재미를 느껴보세요!");
history.push("/");
} else alert("다시 카카오 로그인을 해주세요.");
});
},
fail: function (err) {
alert(JSON.stringify(err));
},
});
};
<Btn backColor="transparent" onClick={handleKakao} padding="0">
<img src="./images/kakaoBtn.png" alt="kakaoBtn" />
</Btn>;
Kakao.Auth.login({
success: 콜백함수1,
fail: 콜백함수2,
});
index.html에 입력한 script 태그를 통해 실행할 수 있는
Kakao.Auth.login() 메서드를 통해 카카오로그인을 하는데
로그인이 성공하면 콜백함수1
을 호출하고
로그인이 실패하면 콜백함수2
를 호출하게 된다
function (authObj) {
fetch(KAKAO_URL, {
method: "POST",
headers: {
Authorization: authObj.access_token
}
})
.then((res) => res.json())
.then((res) => {
localStorage.setItem("kakao_access_token", authObj.access_token);
localStorage.setItem("kakao_refresh_token", authObj.refresh_token);
localStorage.setItem("flix_access_token", res.flix_access_token);
if (res.flix_access_token) {
alert("Flix의 재미를 느껴보세요!");
history.push("/");
} else alert("다시 카카오 로그인을 해주세요.");
});
}
fetch(KAKAO_URL, {
method: "POST",
headers: {
Authorization: authObj.access_token
}
})
이 블로그 내용을 읽으면 이해에 도움이 될 것 같다
서버에 새로운 데이터를 저장할 것이기 때문에 method: "POST" 방식으로
headers에는 카카오서버로부터 받은 access_token kakao_access_token을 Authorization 키값으로 전달한다
.then((res) => res.json())
.then((res) => {
localStorage.setItem("kakao_access_token", authObj.access_token);
localStorage.setItem("kakao_refresh_token", authObj.refresh_token);
localStorage.setItem("flix_access_token", res.flix_access_token);
if (res.flix_access_token) {
alert("Flix의 재미를 느껴보세요!");
history.push("/");
} else alert("다시 카카오 로그인을 해주세요.");
});
function (err) {
alert(JSON.stringify(err));
}
에러내용을 객체형태 (JSON)로 alert 띄운다
아니면 카카오로그인 실패!의 이라고 alert을 띄워도 될것같긴하다
굳이 궁금하다면 console.log을 통해 우리가 확인할정도로만..?