Flutter 기반 파이어베이스 카카오 로그인

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.
___앱 ID 1224324
flutter 기반 파이어베이스 카카오 로그인을 구현했는데 안드로이드 실제 폰에서는 동작을 잘 하는데 안드로이드 에뮬레이터에서는 log in to 앱이름 with kakao account 에서 continue를 눌러도 더 이상 진행이 안 됩니다.

import ‘package:cloud_firestore/cloud_firestore.dart’;
import ‘package:flutter/material.dart’;
import ‘package:flutter/services.dart’;
import ‘package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart’;
import ‘package:get/get.dart’;
import ‘package:parking_lot_help/naver_map_screen.dart’;
import ‘package:firebase_auth/firebase_auth.dart’;
import ‘package:parking_lot_help/const.dart’;

class KakaoLogin extends StatefulWidget {
const KakaoLogin({super.key});

@override
State createState() => _KakaoLoginState();
}

class _KakaoLoginState extends State {
CollectionReference userRef = FirebaseFirestore.instance.collection(‘users’);

@override
Widget build(BuildContext context) {
return InkWell(
onTap: () async {
await _signInWithKakao();

    if (FirebaseAuth.instance.currentUser != null) {
      userRef.doc(FirebaseAuth.instance.currentUser!.uid).get().then((
          doc,
          ) async {
        if (!doc.exists) {
          await userRef.doc(FirebaseAuth.instance.currentUser!.uid).set({
            'userId': FirebaseAuth.instance.currentUser!.uid,
            'pointMoney': SEEDMONEYPOINT,
            'giveHelpNum': 0,
            'getHelpNum': 0,
            'giveRewardNum': 0,
            'getRewardNum': 0,
            'rewardRate': 101,
            'waitingPointToMoney': 0,
          });
          print('*************새로운 문서를 생성했습니다************');
        } else {
          print('*************이미 문서가 존재합니다.**************');
        }
      });
    }
    Get.offAll(() => NaverMapScreen());
  },
  child: Card(
      elevation: 0,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(7)),
      child: Image.asset(
        'asset/image/kakao_login_large_wide.png',
        height: 60,
      )
  ),
);

}

Future _signInWithKakao() async {
// 카카오 로그인 구현 예제

// 카카오톡 실행 가능 여부 확인
// 카카오톡 실행이 가능하면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (await isKakaoTalkInstalled()) {
  try {
    OAuthToken token = await UserApi.instance.loginWithKakaoTalk();
    var provider = OAuthProvider('oidc.parking_lot_help');
    var credential = provider.credential(
      idToken: token.idToken,
      accessToken: token.accessToken,
    );
    await FirebaseAuth.instance.signInWithCredential(credential);

    print('카카오톡으로 로그인 성공');
  } catch (error) {
    print('카카오톡으로 로그인 실패 $error');

    // 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
    // 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
    if (error is PlatformException && error.code == 'CANCELED') {
      return;
    }
    // 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인
    try {
      OAuthToken token = await UserApi.instance.loginWithKakaoAccount();
      var provider = OAuthProvider('oidc.parking_lot_help');
      var credential = provider.credential(
        idToken: token.idToken,
        accessToken: token.accessToken,
      );
      await FirebaseAuth.instance.signInWithCredential(credential);

      print('카카오계정으로 로그인 성공');
    } catch (error) {
      print('카카오계정으로 로그인 실패 $error');
    }
  }
} else {
  try {
    OAuthToken token = await UserApi.instance.loginWithKakaoAccount();
    var provider = OAuthProvider('oidc.parking_lot_help');
    var credential = provider.credential(
      idToken: token.idToken,
      accessToken: token.accessToken,
    );
    await FirebaseAuth.instance.signInWithCredential(credential);

    print('카카오계정으로 로그인 성공');
  } catch (error) {
    print('카카오계정으로 로그인 실패 $error');
  }
}

}
}

질문 1. 파이어 베이스 콘솔에 클라이언트 ID에는 REST API 키를 넣나요, 아니면 네이티브 앱 키를 넣나요? 저는 네이티브 앱 키를 넣는 걸로 알고 있는데 gemini는 자꾸 REST API 키를 넣으라고 해서요.

질문 2. app store에 출시할 때, 다른 SNS 로그인이 있으면 반드시 Apple login 기능도 넣어야 하는 강제 조항은 없어졌나요?