Kaikas account change

안녕하세요, 클린이입니다.

아래 kaikas 예제를 보면 accountsChanged 이벤트를 받을 수 있게 되어있는데요.

//https://docs.kaikas.io/02_api_reference/01_klaytn_provider#klaytn.on-eventname-callback

klaytn.on('accountsChanged', function(accounts) {
// Time to reload your interface with accounts[0]!
})

네트워크 변경 등 이벤트에 대한 동작을 전혀 하지 않는 것 같습니다.
혹시 실행 시점이 중요할까요?

콘솔 창에서 실행 해 보아도 반응이 없고,
klaytn.selectedAddress 를 봐도 변경된 어드레스가 보이지 않습니다.

(다만, 네트워크가 변경 되었을 때 다음 명령을 실행하면 변경된 주소가 반영되기는 합니다.)
this.caver.klay.getBalance(account)

안녕하세요 @klay
Klaytn Forum에 다시 찾아주셔서 감사합니다.

우선 말씀해주신 이벤트를 처리하는 ‘accountsChanged’, ‘networkChanged’ 모두 정상작동하는것을 확인하였습니다.
사실 코드도 특별할거 없이

const accounts = await window.klaytn.enable()

window.klaytn.on('accountsChanged', function(accounts) {
  console.log(window.klaytn.selectedAddress)
})

window.klaytn.on('networkChanged', function() {
  console.log(window.klaytn.networkVersion)
})

이게 전부이며, 모두 콘솔에 정상적으로 출력되는것으로 확인하였습니다.

128466C0-BB9A-49B5-B0AC-4D4FF0C28904

Kaikas를 연결했는지(코드 첫번째 줄) 다시 한번확인하시고, 그래도 안된다면
혹시 조금 더 자세한 코드나, 상황을 말씀해주실 수 있으실까요?

감사합니다.

답변 감사합니다.

예를 들어서 지금 보고 있는 현재 페이지 (forum.klaytn.com) 에서 F12를 눌러 const accounts = await window.klaytn.enable() 를 입력하면, 지갑이 열려서 연결 할 수가 있구요. 연결 후 계속해서 콘솔창에서

window.klaytn.on('accountsChanged', function(accounts) {
  console.log(window.klaytn.selectedAddress)
})

를 치고 카이카스 지갑에서 계정 관리 버튼을 통해 어카운트를 바꾸어 보았지만 아무런 반응이 없고,
window.klaytn.selectedAddress 를 쳐도 undefined가 뜨네요.

혹시 사용하신 window.klaytn 을 위한 별도의 js 라이브러리가 필요할까요?
그리고 필요하다면 사용하시고 계신 버전의 라이브러리를 어디서 받을 수 있을 지 궁금합니다.

흠… 제가 알 수 있는 정보가 너무 제한되어 답변하기에 어려움이 있네요 :thinking:

다만 확실한건 크롬의 콘솔에서 Kaikas Extension을 테스트하기에는 한계가 있습니다.

카이카스를 이용한 웹 서비스 개발을 공부하고 계신다면 아래 세 문서 및 코드를 참고하여 콘솔이 아닌 웹 환경에서 테스트해보시기를 추천 드립니다.

Caver-js Docs
Kaikas Docs
Kaikas Tutorial

추가 질문이 있으면 언제든 편하게 문의주시면 감사하겠습니다. :smiley:

카이카스 예제는 일찍이 해봤었는데,

로컬에서 열면 안되는거는 알고 있었지만 웹으로 옮겨도 이벤트 받는 부분이 계속 잘 안되네요.

지금 별도의 Server Side 없이 동작하게 하려구 해서

깃헙 웹 환경(Only Client Side)에서 시도 해보고 있는데

Tx 보내거나 콜하는거 이런건 대체로 잘 되는데 이벤트 받는게 잘 안돼서 문의를 드렸습니다.

별도 서버사이드 코드 없이 구동하는 웹 환경에서는 어떤 식으로 라이브러리들을 임포트 해야할까요…ㅜ

이번 질문같은경우 클레이튼과는 큰 연관은 없는것으로 보이네요 :sweat_smile:
우선 저는 현재 프론트엔드 개발자가 아니라 저도 Klay님의 질문을 보고 테스트해보았습니다.
저는 이 글을 참조하여 진행하였습니다.

이번에도 이 글의 질문이었던 이벤트 받는부분은 역시나 잘 됐습니다 :face_with_monocle:
별다른 내용은 없지만 제가 작성한 코드는 여기에서 볼 수 있고, 결과는 여기에서 보실 수 있습니다.

참고로, Dekey라는 지갑이 설치되어있는경우 Kaikas가 정상적으로 호출되지 않는 문제를 확인하게되었습니다.
이부분 참고하시면 좋을것 같습니다. 감사합니다.

1 Like

차이점은 아직 잘 모르겠는데 알려주신 방식은 잘 되네요ㅎㅎ
도움 많이 주셔서 감사합니다. :slight_smile:

1 Like