카카오 로그인 풀림 관련 문의드립니다

안녕하세요. 카카오 로그인 풀림 관련으로 문의드립니다.
sdk-version : 2.13.1

일단 저희 앱 로그인 관련 시나리오를 먼저 설명 드리겠습니다.
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만 호출하여도 정상적으로 토큰을 가져와야 할 것으로 보이는데 확인을 부탁드립니다.

감사합니다.

안녕하세요.

확인을 위해 앱 ID, 앱유저 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다
ex) 123456


앱유저 ID
사용자 정보 조회 API 호출 시. 응답 값에 id

안녕하세요
앱id : 498204, 앱유저id : 2795509546 입니다.

로그를 확인해보니 카카오 로그인으로 디벨로퍼스앱과 연결된 후, 24시간안에 개인정보 API를 호출하지 않아서
자동으로 연결끊기되었습니다. (연결끊기되면 리프레시토큰 즉시만료 됩니다.)

아래 공지사항 참고 부탁드려요.

[공지] 가입 미완료자 연결 끊기 처리 안내 / [Notice] Unlink for users who have not completed a signup

보내주신 링크를 보니

*** OIDC를 사용하여 토큰 발급시 ID Token을 발급받고, ID Token에 포함된 닉네임, 프로필 사진, 이메일을 사용하는 경우에도 최초 로그인시 개인정보를 조회하는 API를 호출해야 합니다.**
*** 개인정보를 조회하는 API를 호출하지 않는 경우에는 사용자가 가입 미완료자로 분류되어 연결이 끊어질 수 있습니다.**
앱에서 REST로 호출해야 한다는것으로 보입니다. 맞을까요?

앱에서 REST로 호출해야 한다는것으로 보입니다. 맞을까요?

엇. 아닙니다. UserApi.shared.me()를 호출하면 내부적으로 /v2/user/me가 호출됩니다.


그런데…
앱유저id : 2795509546 로그상 최근 2주간 /v2/user/me 호출이 없어요.

/v1/user/access_token_info 호출만 있는데요. 혹시 앱유저ID로 기가입자는 /v2/user/me 호출하지 않는 걸까요?
로직상 /v2/user/me 호출 안할만한 케이스가 있는지 확인해주시겠어요?

현재 앱에서는 회원가입시 1회만 호출하고 있습니다.

문의 글 1번과 같이 가입 때는
loginWithKakaoTalk 호출 > accessTokenInfo 호출 > UserApi.shared.me() 호출하여 앱에서 가입자 정보 기입화면 노출 순서입니다.

혹시 앱에서 accessTokenInfo 조회시에 me를 지속적으로 호출해야 하는지요?

혹시 앱에서 accessTokenInfo 조회시에 me를 지속적으로 호출해야 하는지요?

반드시 지속적으로 호출할 필요는 없는데요.
이경우 로직상 홀이 있을 것 같네요.

예를들어 이용자가 스스로 연결끊은경우 재로그인 시, 연결 유지가 안될 것같습니다.

(1) 가입 (2) 연결 끊기 (3) 재로그인 (액세스 토큰 발급받았으나 사용자 정보 호출 안됨) (4) 24시간뒤 연결끊김.

  • Unlink 콜백 설정으로 연결끊기를 확인하셔서 재연결 시, /v2/user/me 호출 되도록 하시거나
  • 로그인 시점에 /v2/user/me 호출 하시면 좋을 것 같습니다.

UserApi.shared.unlink 호출은 앱에서 명시적으로 계정탈퇴를 할 경우만 호출되고 있습니다.

카카오톡 앱에서 자사앱 연결해제를 말씀하시는거죠? 그게 맞다면 이해했습니다!
카카오톡 앱에서 연결된 앱 해제할 경우 재로그인(동의)를 하겠지만, me를 호출하지 않아서 발생되는 케이스가 되겠군요.
(일전에 테스트 때문에 카카오톡에서 앱 연결해제한적 있고, 방금도 다시해제하였습니다.)

앱에서는 간단하게 해결 할 수 있는 방법이 로그아웃되어 재로그인 할 경우 me를 호출하는 방법이겠네요.
(accessTokenInfo 실패 > loginWithKakaoTalk and 정보동의 > me 호출)

UserApi.shared.unlink 호출은 앱에서 명시적으로 계정탈퇴를 할 경우만 호출되고 있습니다.
카카오톡 앱에서 자사앱 연결해제를 말씀하시는거죠? 그게 맞다면 이해했습니다!

네넵. 맞습니다. 카카오 계정 관리페이지에서 "연결끊기"를 한 경우 입니다.

앱에서는 간단하게 해결 할 수 있는 방법이 로그아웃되어 재로그인 할 경우 me를 호출하는 방법이겠네요.
(accessTokenInfo 실패 > loginWithKakaoTalk and 정보동의 > me 호출)

네, 재연결 이후, 1번만 호출해주시면 됩니다.

2주간 요거 때문에 로그 저장되게해서 이틀마다 확인했었는데 문제점이 무엇인지 확실하게 알게 되었네요!
복받으실거에요ㅠㅠ
감사합니다 !
(앞으로 공지사항을 잘 확인하겠습니다)

1개의 좋아요