안드로이드에서 카카오 로그인을 진행하고있습니다.
현재 발생하는 문제는 기본 웹 브라우저를 네이버 앱으로 지정한 뒤 카카오 로그인을 실행하여 기본 웹 브라우저(네이버 앱)로 카카오 계정 로그인 시 네이버 앱에서 서비스하는 앱으로 돌아오지 않습니다.
사용자가 네이버 앱을 종료하면 서비스하는 앱에서 로그인 콜백은 받아집니다.
카카오 로그인을 진행하면 서비스하는 앱으로 바로 돌아올 수 있도록 할 수 있을까요?
안드로이드에서 카카오 로그인을 진행하고있습니다.
현재 발생하는 문제는 기본 웹 브라우저를 네이버 앱으로 지정한 뒤 카카오 로그인을 실행하여 기본 웹 브라우저(네이버 앱)로 카카오 계정 로그인 시 네이버 앱에서 서비스하는 앱으로 돌아오지 않습니다.
사용자가 네이버 앱을 종료하면 서비스하는 앱에서 로그인 콜백은 받아집니다.
카카오 로그인을 진행하면 서비스하는 앱으로 바로 돌아올 수 있도록 할 수 있을까요?
확인을 위해 앱 ID 알려주세요~
앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다~
ex) 123456
193108 입니다
구현하신 로그인 방식이 어떻게 되나요?
관련 코드 블럭 및 로그인 화면 캡쳐 공유 부탁드려요.
웹 브라우저가 네이버 앱으로 실행되고 ‘계속하기’ 클릭 시 앱에 콜백이 불리지만 Focus가 네이버 앱에 고정되어 있습니다.
동일하게 네이버앱을 기본앱으로
테스트용 안드로이드 네이티브앱으로 카카오 계정으로 로그인 해보니
리다이렉트 잘되는 것으로 확인됩니다.
말씀하신 상황 재현할 수 없었는데요.
개발하신 앱의 리다이렉트 설정부 공유해주시겠어요?
디버깅 시에 위 첨부드린 코드에서
loginWithKakaoAccount() 함수의 콜백이 호출되는 상황이 다른데요
크롬의 경우 크롬브라우저가 종료된 뒤 handleCallback 이 실행되고
네이버 앱의 경우 네이버 앱이 종료 처리가 되지 않은 채 handleCallback 이실행됩니다.
리다이렉트 부분은 아래입니다.
콜백 부분이 아니라 AndroidManifest 설정 리다이렉트 처리 부분 공유 부탁드려요.
이 부분이 맞을까요?
리다이렉트가 안되는 것은 보통 스킴을 잘못 작성했을때 에러 리포팅 되곤하는데,
AndroidManifest상 별 특이점은 없네요.
확인할 범주를 줄이기 위해
(1) ${kakaoAuthScheme} 를 하드 코딩 하셔서 리다이렉트 되는지 확인 한번 부탁드려요.
(2) 기본 브라우저를 크롬으로 설정했을때는 잘 작동하는지도 확인 부탁드립니다.
정상 작동하는 로그와 비교 해보겠습니다.
하드 코딩하여 해보았지만 안타깝게도 같은 상황이 발생하였습니다.
기본 브라우저를 크롬으로 설정한 경우에는 시나리오대로 잘 작동합니다.
(1) Android 12에서 보안이 강화되어 외부 앱(기본 브라우저)에서 모앱을 호출하기 위해서는 별도의 설정이 필요하게 되었다고하는데요.
아래와 같이 android:exported=“true” 속성 추가해보시겠어요?
<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Redirect URI: "kakao{NATIVE_APP_KEY}://oauth" -->
<data android:host="oauth" android:scheme="kakao{NATIVE_APP_KEY}" />
</intent-filter>
</activity>
(2) ‘Android SDK Full Source & Samples’ 샘플다운로드 받으셔서 실행하시고 loginWithKakaoAcount() 메뉴 선택해도 동일한지 확인 부탁드려요.
답변 감사드립니다.
위 속성을 추가해보았지만 리다이렉션이 제대로 이루어지지 않았습니다.
'계속하기’를 1회 클릭하면 리다이렉션이 되지 않고 2회째 클릭 시 리다이렉션이 이루어집니다.
샘플을 다운로드 받아서 loginWithKakaoAcount() 메뉴를 실행했는데 이때에는 정상적으로 작동하였습니다.
디버깅하여 발견한 사항 중 특이사항이 있었습니다.
sdk 샘플에서 loginWithKakaoAcount() 실행 후 콜백이 불릴 때 네이버 앱이 종료되고 콜백이 호출됩니다.
그러나 제가 사용하는 loginWithKakaoAcount() 함수는 네이버 앱이 종료되지 않고 콜백이 호출됩니다.
조언을 얻을만한 부분이 있을까요?
위에 캡쳐를 보니 UserApiClient가 아니라 LoginClient를 사용하고 계신데요.
SDK버전이 어떻게 되나요? 최신버전으로 가이드와 같이 구현해보시겠어요?
버튼 하나 따로 만드셔서 “UserApiClient.instance.loginWithKakaoAccount” 작동테스트 먼저 해보시는게 좋을 것 같아요.
감사합니다
기존 버전이 낮아 버전을 2.8.2로 변경 후 테스트를 진행해보았고
새로 버튼 따로 만들어서 구현해보았습니다.
네이버 앱이 켜진채로 callback이 호출되는 것을 확인하였고
특이사항으로는 기존에는 2회째 클릭 시 리다이렉션이 되었으나 현재는 리다이렉션이 전혀 발생하지 않았습니다.
manifest 쪽 문제일까요?
음… 저는 재현이 안되서 말씀하신 상황의 정확한 원인 판단은 어려운데요.
샘플로 정상작동한 것으로 봐서는 manifest쪽 보다는 구현하신 코드에 원인이 있을 것으로 보입니다.
버튼 따로 구성하셔서 작성하신 코드 공유해주시겠어요?
onCreate 내부에 구현하였습니다.
AndroidManifest.xml 전체 텍스트 공유 해주시겠어요?
빈프로젝트에 동일하게 설정하고 재현 테스트 해볼게요.
Manifest 에서 login 을 요청하는 activity의 launchMode가 singleInstance 모드로 되어있어서 발생하는 문제였습니다 …
현재 변경하여 정상 동작함을 확인하였습니다.
성실히 답변해주심에 감사드려요!