Expo 앱에 카카오 로그인 붙이기: EAS Build 실전 가이드
Expo SDK 52+ 환경에서 카카오 로그인을 연동하는 방법. @react-native-seoul/kakao-login 5.x, EAS Build, Config Plugin, iOS URL Scheme, Android 키해시까지 실제 삽질 경험 기반으로 정리했습니다.
Expo SDK 52+ 환경에서 카카오 로그인을 연동하는 방법. @react-native-seoul/kakao-login 5.x, EAS Build, Config Plugin, iOS URL Scheme, Android 키해시까지 실제 삽질 경험 기반으로 정리했습니다.
KR 로그인 SDK
Managed Workflow에서 카카오 로그인이 안 되는 이유부터 EAS Build + Config Plugin 세팅, Android 키해시 디버깅까지. Expo 카카오 로그인 실전 가이드.
한 줄 답: Expo에서 카카오 로그인은 EAS Build + @react-native-seoul/kakao-login 5.x + Config Plugin 조합이 현재 가장 안정적인 경로입니다.
Boaz · Product Engineer
iOS에서는 카카오 로그인이 잘 되는데 Android에서만 로그인 창이 열렸다가 바로 닫히는 경험, 한 번쯤은 겪어보셨을 겁니다. 원인은 대부분 키해시 문제입니다. EAS Build는 로컬 디버그 키스토어와 다른 키스토어를 사용하기 때문에, 카카오 개발자 콘솔에 등록한 키해시와 불일치가 생깁니다.
Expo에서 카카오 로그인을 붙이려면 Managed Workflow만으로는 안 됩니다. EAS Build + Config Plugin 경로를 타야 합니다.
카카오 로그인 SDK는 네이티브 모듈(Kakao SDK for iOS/Android)을 직접 사용합니다. Expo Go 앱은 커스텀 네이티브 코드를 실행할 수 없기 때문에 Managed Workflow에서는 동작하지 않습니다.
해결책은 두 가지입니다.
ios/, android/ 디렉터리를 직접 관리하는 Bare Workflow 전환.대부분의 팀은 EAS Build를 선택합니다. 로컬 Xcode/Android Studio 세팅이 필요 없기 때문입니다.
현재(2026년 기준) 최신 버전은 5.4.2입니다. React Native 0.60+ auto-linking을 지원합니다.
yarn add @react-native-seoul/kakao-login
yarn add expo-build-properties
app.config.ts에 Config Plugin을 추가합니다. app.json도 동일한 구조입니다.
import { ExpoConfig, ConfigContext } from 'expo/config';
export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
plugins: [
[
'@react-native-seoul/kakao-login',
{
kakaoAppKey: process.env.KAKAO_APP_KEY ?? '',
overrideKakaoSDKVersion: '2.11.2',
kotlinVersion: '1.9.0',
},
],
[
'expo-build-properties',
{
android: {
extraMavenRepos: [
'https://devrepo.kakao.com/nexus/content/groups/public/',
],
},
},
],
],
});
extraMavenRepos를 빠뜨리면 Android 빌드 시 Kakao SDK 의존성을 못 찾아서 Gradle 빌드가 실패합니다. 초반에 이걸 놓쳐서 30분 날렸습니다.
EAS Build는 자체적으로 관리하는 키스토어로 앱에 서명합니다. 이 키스토어의 SHA-1 해시를 카카오 개발자 콘솔에 등록해야 합니다.
1단계: EAS 키스토어 정보 확인
eas credentials
SHA-1 fingerprint가 출력됩니다. 이 값을 OpenSSL로 Base64 인코딩하면 카카오 키해시가 됩니다.
echo "A1B2C3..." | xxd -r -p | openssl base64
2단계: 카카오 개발자 콘솔 등록
카카오 개발자 콘솔 → 내 애플리케이션 → 앱 설정 → 플랫폼 → Android에서 키해시를 등록합니다.
Windows PowerShell에서 위 명령을 실행하면 줄바꿈 문자가 섞여 잘못된 해시가 나옵니다. Git Bash나 macOS 터미널을 사용하세요.
3단계: 코드에서 직접 확인 (가장 확실한 방법)
import { getKeyHashAndroid } from '@react-native-seoul/kakao-login';
if (__DEV__) {
getKeyHashAndroid().then(hash => console.log('KeyHash:', hash));
}
Config Plugin이 Info.plist를 자동으로 수정해주기 때문에 별도 수작업이 필요 없습니다. 단, 카카오 앱 키가 올바르게 전달되었는지 app.config.ts에서 환경변수가 잘 주입되는지 확인하세요.
| 에러 메시지 | 원인 | 해결 방법 |
|---|---|---|
invalid_key_hash |
Android 키해시 불일치 | eas credentials로 SHA-1 확인 후 콘솔 재등록 |
invalid_ios_bundle_id |
iOS Bundle ID 불일치 | 카카오 콘솔 Bundle ID와 app.config.ts의 bundleIdentifier 일치 확인 |
| 로그인 창이 열리지 않음 (iOS) | URL Scheme 미등록 | kakaoAppKey 환경변수 확인, EAS Build 재실행 |
| Gradle 빌드 실패 (Could not resolve com.kakao.sdk) | Maven repo 미설정 | expo-build-properties에 extraMavenRepos 추가 |
KakaoSDK is not initialized |
SDK 초기화 누락 | KakaoSDK.init() 호출 확인 (Config Plugin 사용 시 자동 처리됨) |
Expo Go는 커스텀 네이티브 코드를 실행할 수 없어서 @react-native-seoul/kakao-login이 동작하지 않습니다. eas build --profile development로 개발 빌드를 만들고 Expo Dev Client를 통해 테스트해야 합니다.
Play Store는 Google Play App Signing을 사용하기 때문에 업로드 키해시와 실제 배포 키해시가 다릅니다. Google Play Console → 설정 → 앱 서명 → 앱 서명 키 인증서에서 SHA-1을 확인하고, 해당 키해시를 카카오 개발자 콘솔에 추가로 등록해야 합니다.
가장 확실한 방법은 앱 코드에서 직접 키해시를 출력하는 겁니다. getKeyHashAndroid()를 호출해서 나온 값과 카카오 콘솔에 등록된 값을 비교하세요. Windows 환경에서 OpenSSL로 변환했다면 줄바꿈 문자가 섞였을 가능성이 높으니 Git Bash나 macOS에서 재시도하세요.
expo-build-properties 플러그인의 extraMavenRepos에 https://devrepo.kakao.com/nexus/content/groups/public/ 을 추가했는지 확인하세요. 이 설정이 없으면 Android 빌드 시 Kakao SDK 의존성을 찾지 못합니다.
Info.plist의 LSApplicationQueriesSchemes에 kakaokompassauth, storykompassauth 등이 등록되어 있어야 카카오 앱 연동이 됩니다. Config Plugin 최신 버전을 사용하면 자동으로 설정됩니다. EAS Build를 다시 실행해 반영하세요.
React Native + NestJS + Supabase + AI 에이전트 17개. 1회 결제로 끝나는 인디해커 시스템입니다.