웹뷰에서 카카오로그인 클릭 시 intent 스킴으로 url이 내려오지 않습니다

Javascript SDK 사용시 안드로이드 웹앱에서는 intent 스킴 형식으로 내려주고 이를 앱에서 핸들링해야 하는 것으로 알고 있습니다.
intent 스킴 처리에 대한 부분은 앱에서 다 구현이 되어 있는 상태인데

웹뷰에서 카카오로그인 버튼 클릭 시 intent:// 형식이 아닌, https://~ 형식의 로그인 폼 입력창이 내려옵니다.

현재 안드로이드 & ios 모두 같은 상황이네요.
ios의 경우에는 kakaolink형식으로 내려와야 앱으로 연결이 가능한 걸로 알고 있는데 마찬가지로 https:// 형식이 내려옵니다.

어떤 정보가 필요하신지 무엇이 원인인지 해결방법을 알려주시면 감사하겠습니다.

안녕하세요~

아래 가이드 확인해보셨을까요?

가이드 https://developers.kakao.com/docs/latest/ko/getting-started/sdk-js#hybrid-app
예제 https://kakao-tam.tistory.com/69?category=866966

답변 감사합니다.
추가 문의 드립니다.

  1. kakao.auth.login 대신 kakao.auth.authorize를 써야 intent 스킴으로 내려오는 것인가요?
    하이브리드 앱 설명 페이지는 읽어 보았으나 구체적으로 어떤 메서드를 호출해야 한다는 것에 대한 부분이 나와있지 않았습니다.

  2. kakao.auth.login 의 경우 모든 웹뷰를 지원하지 않는다는 말이 있는데 현재 앱에서는 ; wv 부분을 지우고 호출하고 있으나
    역시 같은 현상이 발생하고 있습니다. kakao.auth.login으로 호출 시 ios와 android 웹뷰에서 모두 앱으로 바로 연결되기 위한 user-agent 조건이 무엇인지 말씀 부탁드립니다. (intent 스킴이나 커스텀 스킴으로 내려오도록)

앱에서는 intent 스킴인 경우 처리가 되도록 이미 구현되어 있습니다.

kakao.auth.login 팝업으로 호출되고, kakao.auth.authorize는 리다이렉트 되는 방식으로
인앱브라우저 구현에 따라 팝업 구현이 달라서 kakao.auth.login는 오작동 문의 사례가 빈번하여 kakao.auth.authorize를 권유드리고 있습니다.
intent 스킴으로 내려오는 것은 user-agent 에 따라 달라지는데요.

모바일 인앱 브라우저에서 “카카오톡으로 로그인” 은 아래 기준으로 노출 설정됩니다.

지원 가능한 카카오톡 버전 : And 9.1.0 / iOS 9.0.0 이상
지원 가능 어플리케이션 : Chrome, Safari 등 기본 브라우저 + Naver / Facebook / Instagram
그외 비표시 (단, 서비스 상황에 따라 버튼 미노출 설정 변경될 수 있음)

kakao.auth.authorize 호출 시는 정상 호출 됩니다.

참고 부탁드려요~

답변 감사합니다.

추가적으로 궁금한 사항이 있습니다.
조건에 맞는 UA로 수정하여 로그인 요청을 하고 있는데

  1. 앱 미설치 시, kakao.auth.login 에서 내려오는 intent scheme에 package 명이 명시되어 있지 않은데, 이 경우 어떻게 스토어 내 다운로드 페이지로 유도해야 하는지 궁금합니다. 보통 이런 경우 package 명을 통해 필요한 앱을 명시해주는 걸로 알고 있는데 패키지명이 없으니 스토어로 연결시키는 조건을 정하기가 까다롭네요.

  2. 앱이 설치된 경우, 로그인 중간 단계에서 멈춘 후 카카오 로그인을 시도하면 (권한만 허용한 상태) intent 스킴에 fallback url이 내려오긴 하는데 자동으로 앱이 실행되며 로그인 단계로 넘어가지는 않고 있네요. 이 부분은 자동으로 연결되도록 처리가 불가능하실까요?

안녕하세요~

  1. 카카오톡이 설치 안되었을때 스토어로 연결 시키려고 하시는군요.
    isKakaoTalkLoginAvailable 함수를 제공하고 있는데, 사용해보시겠어요?
if(!LoginClient.instance.isKakaoTalkLoginAvailable(this)){

    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.kakao.talk"))
    startActivity(intent)
}
  1. 카카오톡을 설치만 한 상태를 말씀하시는 걸까요?
    소유하신 서비스에서 카카오 로그인 시도하여, intent 스킴으로 톡을호출하시면 카카오톡 실행되어 계정 설정화면이 뜨는데…

다른 상황이라면 설명 부탁드려요~

안녕하세요.
Screenshot_20210729-115043_KakaoTalkScreenshot_20210729-115105_KakaoTalk

  1. 하이브리드 앱에서 해당 함수를 사용하기 위해서는 앱에 네이티브 SDK를 연동하여 사용해야 하는 것 같은데 맞나요?
    그냥 intent 스킴에 package명만 정의해서 내려주면 해당 intent 처리가 불가능 할 때 패키지 명에 정의되어 있는 앱으로 스토어 이동을 시켜주면 되는데 굳이 네이티브 SDK까지 연동을 해야 하는지 궁금합니다.

  2. 카카오톡 설치 후 어떤 진행도 되지 않은 상태라면 정상적으로 앱 로그인 화면으로 연결이 됩니다.
    하지만 설치 후 권한요청을 받고 로그인 입력폼을 작성하는 화면에서 앱을 종료하면 이후 재 호출시 앱으로 연결이 되지 않습니다.
    다시 로그인 과정을 완료하면 앱으로 연결이 됩니다.
    요약하면

  • 아예 로그인 진행이 안된 상태이거나 완료된 상태 -> 앱으로 정상 연결
  • 중간에 멈춘 상태 -> 앱으로 연결되지 않음
    상단에 이미지 첨부드리곘습니다.
    인텐트 스킴은 두 경우 모두 비슷하게 넘어오는 것 같네요.
    카톡 앱에서 화면이 달라 인텐트 처리가 안되어 있는 것인가요?

현재 제 서비스의 구조와 목적을 다시 말씀드리면 하이브리드 앱에서 카카오 로그인을 구현 중이고,
(웹페이지는 Javascript SDK를 사용하므로 네이티브 웹뷰에서는 여기서 내려주는 url을 사용합니다)
앱에서는 네이티브 앱으로 연결되도록 처리가 되어야 합니다.

  1. SDK를 사용하시지 않고 com.kakao.talk 패키지명으로 판단하셔도 됩니다.

  2. 네, 확인했습니다. 권한 동의 하고는 앱을 호출하지 못하는 증상이 있네요. 관련 부서에 제보하도록 하겠습니다.

1번의 경우도 스킴에 package명을 함께 내려주시면 좋을 것 같은데 안 내려주는 특별한 이유가 있을까요?
혹시 없다면 이부분도 함께 전달해주시면 감사하겠습니다.

intent스킴을 받아 처리할 때 굉장히 다양한 형태의 스킴이 내려오기 때문에 패지키명이 따로 내려오지 않으면 어떨 때 카카오 설치 페이지로 이동시켜야 하는지 조건처리가 애매해지는 것 같아요.
일단 intent 에 내려오는 action=com.kakao.talk.intent.action.CAPRI_LOGGED_IN_ACTIVITY 을 기준으로 처리하려고 하는데 이걸 기준 값으로 지정하면 될지 궁금합니다.

넵, 해당 값으로 처리하시면 될 것 같아요~

두번째 문의 주신사항은

“현재 안드로이드 카카오톡 구조상 미로그인 시에는 앱 전환이 안되고 있어서, 이 부분은 iOS 와 동일한 구조로 검토 하신다고 합니다.”

변경사항 전달 받으면 공유 드리도록 하겠습니다!

정성스런 답변 감사드립니다.

덕분에 문제가 많이 해결됐네요.

1개의 좋아요