앱ID: * 775109
플러터로 카카오톡 소셜 로그인을 구현해서 사용 중입니다.
import ‘package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart’;
위 패키지로 구현했구요.
대부분 카카오톡 로그인이 잘 되는데 몇몇 안드로이드 기기에서 로그인이 안 되는 경우가 발생합니다.
확인해보니
bool kakaoLoggedIn = await _kakaoLogin.login();
login() 코드 내에서 어떤 부분에서 에러가 발생하는지 살펴봤는데요.
@override
Future<bool> login() async {
try {
bool isInstalled = await isKakaoTalkInstalled();
if (isInstalled) {
// 로그인
try {
// 로그인
await UserApi.instance.loginWithKakaoTalk();
return true;
} catch (error) {
if (error is PlatformException && error.code == "CANCELED") {
await sendMail("카카오 로그인 에러",
"사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소하였습니다.\n\n$error");
return false;
}
try {
await UserApi.instance.loginWithKakaoAccount();
return true;
} catch (error) {
await sendMail("카카오 로그인 에러",
"카카오톡에 연결된 카카오 계정이 없습니다. 다시 카카오 계정으로 로그인 시도하였으나 실패했습니다.\n\n$error");
return false;
}
}
} else {
// 로그인 x
try {
// 토큰 생성
await UserApi.instance.loginWithKakaoAccount();
return true;
} catch (error) {
await sendMail("카카오 로그인 에러",
"기기에 카카오톡 설치가 되지 않았습니다. 다시 로그인 후 시도했으나 실패했습니다.\n\n$error");
return false;
}
}
} catch (error) {
// 설치 여부 체크 x
await sendMail("카카오 로그인 에러", "카카오 설치 과정 자체에 에러가 발생했습니다.\n\n$error");
return false;
}
}
모두 “기기에 카카오톡 설치가 되지 않았습니다. 다시 로그인 후 시도했으나 실패했습니다.\n\n$error”)
이 부분에서 에러가 떨어지네요.
정리하면 isKakaoInstalled() 가 false로 떨어지고 await UserApi.instance.loginWithKakaoAccount() 도 실패했다는 얘기인데요.
유저의 핸드폰에 kakao가 설치되어있어서 이 부분이 이해가 되질 않습니다.
로그인이 안되다보니 설치가 되지 않는 유저의 카카오 id를 알진 않는데요…
iOS 같은 경우는 몇몇 사례들을 찾아보니 Info.plist에 LSApplicationQueriesSchemes를 추가 안해서 발생하는 경우가 있던데 안드로이드는 잘 작동하고있으니 권한 문제는 아니지 않나요?
카카오 설치가 되었는데도 로그인이 안 되는 이유가 무엇인지 혹시 알 수 있는 방법이 없을까요…ㅠ