안녕하세요.
개발자 센터에 새로운 어플리케이션을 테스트중인데요.
불과 10일전까지만 해도 다른 계정의 어플리케이션에서 문제가 없었는데, 새로 만든 어플리케이션에서는 계속 이런 현상이 있습니다.
scope=friends 를 사용하면 ‘카카오 서비스내 친구목록(즐겨찾기 친구포함)’ 동의 화면이 뜨고 몇번을 진행해도 친구목록 api 호출시 아래와 같은 응답을 받습니다.
카카오톡 앱에서 뭔가 허용해야 할 게 있나요? 동의를 했음에도 카카오톡 앱에서 연결된 서비스 관리에 해당 동의 항목이 나오지도 않습니다.
아래 저와 비슷한 현상을 겪은 글을 봤는데 저는 AccessToken 문제가 아닙니다.
왜냐하면 같은 토큰으로 https://kapi.kakao.com/v2/user/me 는 잘 호출되며 https://kapi.kakao.com/v1/api/talk/friends 만 여러번 동의를 했음에도 계속 이런 응답이 나오는겁니다. 아무리 동의를 재시도해도 마찬가지입니다.
뭔가 현 상태가 버그가 아닌가 싶을 정도네요. 동의를 했을때 서버에서 뭔가 제대로 처리를 못하고 있는거 아닌지요?
참고로 사용한 AccessToken 은 9lVEQHtyxVKfIOwCuma6XMzV************** 입니다.
정확한 답변 부탁 드립니다.
처음 ‘인가코드받기’ 를 할땐 scope 없이 요청했다가 '토큰 받기’를 한 후에 한번 더 '추가 항목 동의 받기’를 호출해서 scope을 넣었는데요.
그렇다면 토큰이 만들어진 후 ‘추가 항목 동의 받기’ 호출시 friends 을 scope에 넣었는데도 제대로 반영이 안된 듯 합니다.
그럼 그냥 처음부터 ‘인가코드받기’ 할때 scope을 모두 넣어버리면 되는건가요?
네, 간단히 답변드리면 처음에 인가 코드 받기때 필요한 스콥을 모두 넣으면 정상 동작할 것입니다.
‘추가 동의 받기’ 가이드에도 써있지만, '인가 코드 받기’나 추가 동의 받기는 보내는 요청 측면에서는 동일한 요청입니다.
다만 서비스 측면에서 어떤 동의항목을 더 받아야하냐 마냐의 차이만 있습니다.
이렇게 해서 받은 코드를 '토큰 받기’의 파라미터로 넣으면 그 코드에 해당하는 동의 항목 정보를 포함하는 토큰이 발급되는 형식입니다.
따라서 나중에 받은 코드는 그 이전에 받은 토큰에 전혀 영향끼치지 않습니다.
나중에 받은 코드를 이용해 다시 토큰을 받아야 해당 사용자는 필요한 스콥을 모두 얻게되는 것입니다.
이러한 동작은 필수적이지 않은 기능 사용할때 추가 동의를 받거나, 선택 항목을 동의 안했다가 해당 기능 이용시 동의를 받을 때 사용하게 됩니다.
말씀하신대로 인증 코드 받기에 필요한 스콥을 모두 넣은 형태로만 구현한다면, 당장의 친구 목록 조회는 가능할 것입니다.
다만, 연결시 친구 목록 제공에 동의를 하지 않았던 유저가 다시 동의를 하기 위해서는 ‘추가 항목 동의 받기’ -> '토큰 받기’의 과정이 필요하게 됩니다.
물론, 이러한 동작은 실제 서비스과정에서 사용자 편의성을 위한 것이므로,
현재 테스트 구현중이시라면 처음부터 모두 넣는 식의 구현은 아무런 문제는 없습니다.