isKakaoTalkInstalled()에 따라 카카오톡 실행여부 판단
카카오톡으로 로그인을 권장
- true
- 모바일 기기의 네이티브 앱에서 요청했고, 카카오톡이 설치돼 있는 경우
- 모바일 기기의 웹 브라우저(웹뷰)에서 요청한 경우
- false
- 모바일 기기의 네이티브 앱에서 요청했고, 카카오톡이 설치돼 있지 않은 경우
- 모바일 기기가 아닌 경우
앱 등록 및 iOS 플랫폼 추가
Bundle ID 등록 (ex. com.example.app)
Redirect URI 등록 (kakao${NATIVE_APP_KEY}://oauth 형태 자동 처리됨)
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>kakao{NATIVE_APP_KEY}</string>
</array>
</dict>
</array>

KakaoSdk.init(...) 호출 필요 (nativeAppKey 포함)
kakao_flutter_sdk_user 패키지 설치
카카오 로그인은 구글 로그인과 다르게 자동로그인을 지원하지 않기 때문에 직접 코드를 짜야함(토큰의 차이인듯)
자동로그인을 구현하였지만, 알림창 뜨는건 없앨수가 없는 것 같음.

자동 로그인 시도는 가능하지만, 사용자 승인창은 피할 수 없다.
사용자가 처음 로그인하고 토큰을 유지한 상태에서는 앱 재시작 시 자동 로그인은 되지만, 웹뷰/앱 간 도메인 공유 승인은 무조건 다시 뜰 수 있다.
| 항목 | Kakao | |
|---|---|---|
| 인증 방식 | Firebase SDK 내부 처리 (signInWithGoogle) | Kakao SDK → OAuth 2.0 기반 외부 세션 (loginWithKakaoTalk, loginWithKakaoAccount) |
| 자동 로그인 가능 여부 | FirebaseAuth.instance.currentUser 값이 있으면 자동 로그인 처리됨 | AuthApi.instance.hasToken()이 true여도 iOS에서는 사용자 승인 창이 한 번 더 나타남 |
| 사용자 승인 창 | 없음 (기기에 구글 계정이 있으면 내부적으로 처리됨) | iOS에서는 필수 외부 도메인(kakao.com) 접근 시 사용자의 동의 창이 뜸 |
| 로그인 후 사용자 정보 처리 | Firebase가 자동으로 처리 (유저 정보, 토큰 등 포함) | Kakao SDK에서 UserApi.instance.me() 호출로 직접 정보 조회 후 Firestore 등에 저장해야 함 |
| Firebase 연동 | 기본 제공 (firebase_auth에서 바로 사용 가능) | 직접 Firestore에 저장하거나 Custom Auth 구현 필요 |
if (await AuthApi.instance.hasToken()) {
try {
final user = await UserApi.instance.me();
// 자동 로그인 성공 → 사용자 정보 처리
} catch (e) {
// 토큰은 있었지만 만료/오류 → 로그인 시도 필요
}
}
위 방식들을 통해 Kakao 로그인도 일정 수준의 자동 로그인 흐름을 구성할 수 있지만, iOS의 보안 정책으로 인해 최초 접근 시 '계속' 버튼은 필수로 노출