일단 저희 앱 로그인 관련 시나리오를 먼저 설명 드리겠습니다. 1. 앱 시작 > 카카오 로그인 버튼 클릭
UserApi.isKakaoTalkLoginAvailable() 체크 후 loginWithKakaoTalk or loginWithKakaoAccount 호출.
호출 성공시 accessTokenInfo로 accessTokenInfo에서 id 및 accessToken 가져오기.
회원가입 시나리오 > requestMe로 email, nickName 등등 가져오기.
해당 정보로 자사 서비스 가입 및 로그인 처리.
2. 자동로그인
앱에서 유저 정보를 기반으로 계정 타입에 따라 카카오일 경우 UserApi.shared.accessTokenInfo() 호출하여 id 및 accessToken 획득 후 자사 서비스 로그인 처리.
3. 자사앱 자체 토큰 만료시
앱에서 자사 서비스 app-api처리시 내부 refreshToken사용 중 토큰 만료 될 경우 accessTokenInfo호출하여 id 및 accessToken 획득 후 자사 서비스 재로그인
이렇게 처리되어있습니다.
문제는 카카오로그인 후 앱이 죽지 않은 상태에서 2~3일 후 앱 실행시 위 3번 케이스 진행 후 accessTokenInfo를 호출하면 fail(error)처리됩니다. (이로인해 토큰 갱신 실패하였다고 판단하여 앱에서는 로그아웃 처리…)
처리방법으로는 로그아웃 처리하지 않고 위 1번 처럼 로그인 과정을 진행하면 카카오톡 이동 후 다시 앱 복귀하여 로그인 정상처리 될 것으로 생각했는데요, 카카오톡 이동 후 다시 서비스 동의 화면이 나옵니다.(앱 아이콘 및 전체선택이 있는 화면)
로그인이 풀린 경우라도 재가입처럼 보이는 앱 동의는 나오지 않아야 하는게 맞는데 위 현상이 나오는게 이해가 안되네요.
https://devtalk.kakao.com/t/sdk/111189/16
해당 글 참고했는데 토큰이 nil로 인한(갱신실패,api에러,기타) 실패가 2~3일 후에는 무조건 발생되는거 같습니다.
위 문의글과 같다면 1회 로그인 후 부터는 사용자가 앱 연결을 해제한다던가, 로그아웃 하지 않는 한 accessTokenInfo만 호출하여도 정상적으로 토큰을 가져와야 할 것으로 보이는데 확인을 부탁드립니다.
*** OIDC를 사용하여 토큰 발급시 ID Token을 발급받고, ID Token에 포함된 닉네임, 프로필 사진, 이메일을 사용하는 경우에도 최초 로그인시 개인정보를 조회하는 API를 호출해야 합니다.**
*** 개인정보를 조회하는 API를 호출하지 않는 경우에는 사용자가 가입 미완료자로 분류되어 연결이 끊어질 수 있습니다.**
앱에서 REST로 호출해야 한다는것으로 보입니다. 맞을까요?