카이카스 로그아웃 기능 구현

카이카스에서 로그아웃 할 수 있도록 하는 기능은 어떻게 구현해야 하는 걸까요~?

정확히는 카이카스 로그아웃 이라기보다는
카이카스 지갑연결 해제에 가깝겠네요
유저가 웹 UI를 통해 로그아웃을 할 수 있게 하고 싶습니다
오픈씨 로그아웃 버튼 같은 느낌으로요~

카이카스 공식 문서에는 비슷한 기능이나 설명이 없는 것 같아
조금 난항을 겪고 있습니다 ^^a;;

caver-js를 통해 javascript로 개발을 하고 있습니다

안녕하세요 :slight_smile:

카이카스는 메타마스크와 유사하게 지갑 연결 시 유저의 klaytn address를 제공하는 방식으로 동작하기 때문에 사실상 지갑에서 제공하는 로그아웃 기능은 없다고 보시면 되겠습니다.

오픈씨에서 제공하는 로그아웃 버튼은 frontend 단에서 처리하는 액션이고 실제로 메타마스크 연결된 사이트에 보시면 여전히 존재하는 것을 확인할 수 있습니다. 연결 해제는 사용자가 직접 처리하는 구조입니다.

로그아웃과 유사한 기능을 구현하시려면 구현하시는 bapp 단에서 로그아웃처럼 보이도록 처리해주시면 충분할 것으로 보입니다.

감사합니다.

1개의 좋아요

안녕하세요~

오호 그렇군요~^^
그렇게 된다면 [로그아웃처럼 보이도록 처리]하는 게
그냥 로그아웃 하면 지갑 address를 들고 있지 않는 것처럼 보이게 하고
로그인을 하면 다시 지갑 address를 들고 있는 걸로 보이게 하면 되는 게 맞는지요?

그렇게 생각해서 구현하고 있었는데
그럼 한 가지 더 궁금한 게 있는데
사용자가 bapp을 사용하던 중에 카이카스 지갑을 잠근 경우에는 (혹은 지갑이 잠긴 경우에는)
다시 unlock → approve → bapp 사용 절차로 가야하니
사용자의 승인 이후에 address를 받아오게 하려고 했는데
카이카스 unlock만 해도 approve가 이루어지기 전에 바로 address를 들고 오더군요
찾아보니 캐싱된 approve가 남아있어서
unlock만 하면 bapp을 다시 approve를 하기 전임에도
이미 승인된 기록이 남아 있어서 그렇게 처리된다는 것 같던데
이 경우는 어찌 처리해야 하는 걸까요? ㅠㅠ

현재는 지갑 주소를 받아오는 구문을

window['kaikas'].enable().then((accounts) => {
  if (accounts.length > 0 && accounts[0] !== DEFAULT_ADDRESS) {
    setAddress(accounts[0]);
  }
});

같은 식으로 처리하고 있었습니다 ^^
(DEFAULT_ADDRESS는 0x000…000의 상수입니다)

넵 말씀하신 기능은 Kaikas를 이용해서 처리하시기는 어려울 것 같습니다. 오픈씨 + 메타마스크를 확인해보니 Kaikas와 동일한 플로우로 approve 없이 동작하고 있는데요, 혹시 해당 기능이 꼭 필요하신 이유가 있을까요? 설명해주시면 추후 관련 기능에 대해서 논의해볼 수 있을 것 같습니다~

아하 그렇군요
사실 기능적인 필요성보다는
유저 입장에서는 버그라고 생각하기 충분할 것 같아서요 ^^

그럼 해당 기능을 빼고는
제가 위에서 적은 대로만 처리하면 되는 게 맞을까요~?

네, 제 생각에는 충분해 보입니다 :slight_smile:

넵넵~ 빠른 답변 정말 감사합니다 ^^