카카오 로그인

김동연·2025년 6월 2일

개발기록일지(Flutter)

목록 보기
14/32

카카오 로그인

  • kakao developers 문서 참조

  • isKakaoTalkInstalled()에 따라 카카오톡 실행여부 판단

  • 카카오톡으로 로그인을 권장

  • true
    • 모바일 기기의 네이티브 앱에서 요청했고, 카카오톡이 설치돼 있는 경우
    • 모바일 기기의 웹 브라우저(웹뷰)에서 요청한 경우
  • false
    • 모바일 기기의 네이티브 앱에서 요청했고, 카카오톡이 설치돼 있지 않은 경우
    • 모바일 기기가 아닌 경우

1. Kakao Developers Console 설정

앱 등록 및 iOS 플랫폼 추가

Bundle ID 등록 (ex. com.example.app)

Redirect URI 등록 (kakao${NATIVE_APP_KEY}://oauth 형태 자동 처리됨)

2. Info.plist 설정

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>kakao{NATIVE_APP_KEY}</string>
    </array>
  </dict>
</array>

3. 권한 동의 항목 설정

  • 개발자 콘솔 > 동의항목에서 프로필 정보인 닉네임, 이메일 등 필요한 항목을 경우에 따라 설정.\
  • 특정 항목은 비즈앱으로 신청 한 후에 가능
  • 필수 설정, 사용자 동의 필수 설정 가능, 필요할 시 동의, 미동의 등 다양한 설정 가능.
  • 동의 항목에 넣어도 이미 한번이라도 로그인이 된 상태라면 서비스를 해제한뒤에 테스트를 해볼 수 있음.(몰론 해제해도 한번 넘어간 데이터는 사라지지 않음.)
  • 카카오 계정 > 계정 이용 > 외부 서비스 들어가서 해제하거나 선택적 동의항목을 바꿀 수 있음

4. iOS 앱 구성

  • KakaoSdk.init(...) 호출 필요 (nativeAppKey 포함)

  • kakao_flutter_sdk_user 패키지 설치

5. 자동 로그인 구현 (선택)

  • 카카오 로그인은 구글 로그인과 다르게 자동로그인을 지원하지 않기 때문에 직접 코드를 짜야함(토큰의 차이인듯)

  • 자동로그인을 구현하였지만, 알림창 뜨는건 없앨수가 없는 것 같음.

결론

  • 자동 로그인 시도는 가능하지만, 사용자 승인창은 피할 수 없다.

  • 사용자가 처음 로그인하고 토큰을 유지한 상태에서는 앱 재시작 시 자동 로그인은 되지만, 웹뷰/앱 간 도메인 공유 승인은 무조건 다시 뜰 수 있다.


Google vs Kakao 로그인 비교

항목GoogleKakao
인증 방식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의 보안 정책으로 인해 최초 접근 시 '계속' 버튼은 필수로 노출

0개의 댓글