Android 12 버전 사용하고 있고 ID 1062548입니다.
이 부분까지는 잘 뜨는데 이 부분에서 동의하고 계속하기가 클릭되지 않습니다.
(웹뷰에서 동의하고 계속하기가 클릭이 되지 않을 뿐 아니라, 카카오톡이 깔려있는 핸드폰의 경우에는 카톡으로 실행이 된후에 로그인이 되는 것이 아니라 웹뷰로 들어가서 저 화면이 뜨고 로그인이 실행이 안됩니다.
<activity
android:name=".ui.login.SplashScreenActivity"
android:exported="true"
android:theme="@style/Base.Theme.SplashScreen.Unipiece">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data
android:host="oauth"
android:scheme="${NATIVE_APP_KEY}" />
</intent-filter>
</activity>
이렇게 사용을 했다가 redirect url??? 문제인 것 같다고 해서
<activity
android:name=".ui.login.SplashScreenActivity"
android:exported="true"
android:theme="@style/Base.Theme.SplashScreen.Unipiece">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="oauth"
android:scheme="${NATIVE_APP_KEY}" />
</intent-filter>
</activity>
<queries>
<package android:name="com.kakao.talk" />
</queries>
</manifest>
이렇게도 고쳐봤는데 수행이 안됩니다.
혹시 몰라 로그인 코드까지 첨부합니다.
private fun kakaoLogin(){
val TAG = "test1234"
//kakaoSDK 초기화
KakaoSdk.init(requireActivity(), BuildConfig.KAKAO_API_KEY)
//카카오 계정으로 로그인 공통 callback 구성
val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
if (error != null) {
Log.e(TAG, "카카오계정으로 로그인 실패", error)
} else if (token != null) {
Log.i(TAG, "카카오계정으로 로그인 성공 ${token.accessToken}")
}
}
// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (UserApiClient.instance.isKakaoTalkLoginAvailable(requireActivity())) {
UserApiClient.instance.loginWithKakaoTalk(requireActivity()) { token, error ->
if (error != null) {
Log.e(TAG, "카카오톡으로 로그인 실패", error)
// 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
// 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
return@loginWithKakaoTalk
}
// 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인 시도
UserApiClient.instance.loginWithKakaoAccount(requireActivity(), callback = callback)
//Log.d("seonguk1234", Utility.getKeyHash(requireActivity()))
} else if (token != null) {
Log.i(TAG, "카카오톡으로 로그인 성공 ${token.accessToken}")
// 로그인한 사용자 정보를 가져온다.
// 이 때 accessToken 을 카카오 서버로 전달해야 해야하는데 알아서해준다.
UserApiClient.instance.me { user, error ->
if (error != null) {
Log.e(TAG, "사용자 정보를 가져오는데 실패하였습니다", error)
} else if (user != null) {
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
checkUserId = viewModel.checkUserId(user.kakaoAccount?.email?:"")
if (checkUserId != false){
val dialog = NicknameDialog("닉네임을 입력해주세요")
dialog.setNicknameButtonClickListener(object : NicknameDialog.dialogButtonClickListener{
override fun nicknameOkButton() {
val nickname = dialog.binding.nickNameDialog.text.toString()
val userId = user.kakaoAccount?.email?:""
val name = user.kakaoAccount?.name?:""
val phoneNumber = user.kakaoAccount?.phoneNumber?:""
val userPwd = user.id.toString()
viewModel.insertUserData(name, nickname, phoneNumber, userId, userPwd,true){success ->
if (success){
viewLifecycleOwner.lifecycleScope.launch {
val userInfo = viewModel.getUserDataByUserId(userId)
val newIntent = Intent(requireActivity(), MainActivity::class.java)
UniPieceApplication.prefs.setUserIdx("userIdx", userInfo!!.userIdx)
UniPieceApplication.prefs.setAutoLogin("userId", userInfo.userId)
startActivity(newIntent)
}
}
}
}
override fun nicknameNoButton() {
}
})
dialog.show(parentFragmentManager, "NicknameDialog")
}else{
viewLifecycleOwner.lifecycleScope.launch {
val userInfo = viewModel.getUserDataByUserId(user.kakaoAccount?.email?:"")
val newIntent = Intent(requireActivity(), MainActivity::class.java)
UniPieceApplication.prefs.setUserIdx("userIdx", userInfo!!.userIdx)
UniPieceApplication.prefs.setAutoLogin("userId", userInfo.userId)
startActivity(newIntent)
requireActivity().finish()
}
}
}
}
}
}
}
} else {
UserApiClient.instance.loginWithKakaoAccount(requireActivity(), callback = callback)
}
}