토스 로그인 연동하기 관련 질문입니다

안녕하십니까 토스 로그인 연동하기 관련해서 궁금한 점이 생겨서 문의드립니다.

저희는 현재 클라이언트 단에서 인가코드를 발급해서 백엔드 서버로 전송시킨 다음, 백엔드에서 2. AccessToken 받기4. 사용자 정보 받기를 하여 사용자 정보를 저장한 다음에 백엔드 자체 jwt(access/refresh 토큰)를 발행하는 방식으로 로그인을 진행하고 있습니다.

그러면 이렇게 했을 때 토스 간편로그인의 **3. AccessToken 재발급 받기 (재발급은 자체적으로 발급한 refreshToken으로 재발급을 진행하면 되니깐) 와 6. 로그인 끊기(**로그아웃하는 기능으로 보이는데 이 역시 자체적으로 발급한 accessToken과 refreshToken을 삭제시켜주면 되니깐)는 필요없을 것으로 보이는데 간편로그인을 연동할 때 가이드에 나온 7개의 api가 전부 필수적으로 연동되어야하는지 궁금합니다.

그리고 7. 콜백을 통해 로그인 끊기 또한 필수적으로 연동이 되어야하는지 만약 안되어 있으면 반려사유가 되는지 궁금합니다!

AccessToken 유효시간은 1시간이고, refreshToken 유효시간은 14일입니다.

AccessToken 으로만 개발을 하시면 지속적으로 API를 호출해야해서, refreshToken 을 발급받는 방향으로 개발하시는 걸 권장드립니다.

또한 로그인 끊기 api를 호출 주실 때 userKey에 맵핑된 AccessToken이 많을 경우 readTimeout 이 발생할 수 있는 점 참고 부탁드립니다.

로그인 연결 끊기 api는 필수적으로 개발하실 필요는 없으나, 추후 유저에게 로그인 끊기 기능은 없는지 문의가 들어올 수 있습니다.

콜백을 통해 로그인 끊기 기능의 경우 필수적으로 연동하셔야 하는 부분은 아닙니다. 다만, 토스앱에서는 로그인 연결 끊기 기능을 제공하고 있어 사용자가 언제든지 연결을 해제할 수 있어요.

1개의 좋아요

넵 그런데 저희가 자체 jwt를 발급하는 형식이다보니깐 자체 accessToken과 refreshToken을 발급해주고 있는 상태여서 토스 accessToken을 호출하는 경우는 맨 처음 로그인할때와(사용자 정보를 받아야하니깐), 자체 accessToken과 refreshToken이 모두 만료되어서 새로 로그인을 해야할 경우 밖에 없는 것 같아서 3. AccessToken 재발급 받기가 사실상 불필요하다는 생각이 들어서 문의드린거였습니다. 로그인 끊기 같은 경우에도 저희가 로그아웃 기능을 개발하여 자체 accessToken과 refreshToken을 만료 및 저장소에서 삭제시키면 될 것 같아서 필요없을 것 같다고 판단한 거구요

답변주신 내용을 보면 자체 jwt를 발급해서 인증, 인가를 수행하는 것보다는 토스에서 발급한 accessToken과 refreshToken으로 서비스 인증, 인가를 수행하는 걸 권장하는 의미인 것 같은데 제가 이해한게 맞을까요?

만약 콜백을 통해 로그인 끊기 기능을 연동하지 않고 출시를 했을 때에 추후 저희 서비스 사용자가 토스 서비스를 탈퇴했는지 여부는 알 수 없는 건가요? 아니면 다른 방법이 있는 건가요?

안녕하세요 :slight_smile:
자체 jwt를 발급하여 자체 서버와 통신시 인증/인가 용도로 이용하셔도 무방합니다.
대신 토스 api 이용(푸시,알림,프로모션 등)을 위해서는 accessToken을 이용하여 발급받은 userKey 가 필수입니다.
해당 토스 api를 호출해야할 때 accessToken 이 만료되었다면, refreshToken(14일 동안 유효) 으로 accessToken을 리프레시한 후 시도해주시면 되겠습니다.

콜백을 통해 로그인 끊기 기능을 연동하지 않으시면, 추후 알 수 있는 방법이 없습니다 :cry:

1개의 좋아요

넵 개발할 때 그 점이 걸리긴 했지만 현재 자체 토큰 페이로드에 토스 accessToken을 통해 발급받은 userKey를 저장해놓은 상태이고, DB에도 userKey값을 저장해두고 있어서 토스 api를 이용할 때 자체 토큰 페이로드에서 userKey를 얻어오거나 DB에서 얻어오면 될 것 같아서요

콜백을 통해 로그인 끊기 같은 경우에는 콘솔에서 콜백주소를 입력하면 되는 걸로 알고 있는데 이때 콜백주소는 저희 백엔드 서버 주소(탈퇴할 때 해당 유저정보도 삭제를 해야하니깐) 로 설정해야하나요?

그리고 앱인토스 도메인이 아닌 파트너사 도메인에서 쿠키 기반 로그인을 구현하면 정상 동작하지 않는다는 사실을 공식문서를 통해서 알게 되었는데 이런 경우에는 자체 서비스 리프레쉬 토큰을 어떤 경로로 전달을 해야할까요? 액세스토큰과 같이 authorization header에 전달을 해주는 방법 밖에 없는 건가요?