kakao Developers 사이트에 로그인합니다.
내 애플리케이션에 들어가서 애플리케이션 추가하기 버튼 선택합니다.
앱 아이콘(선택), 앱 이름, 사업자명, 카테고리 작성후 저장합니다.

플랫폼 -> Android 플랫폼 등록에 들어갑니다.

아래 정보들을 입력합니다.
플랫폼 -> iOS 플랫폼 등록에 들어갑니다.

번들 ID를 입력합니다.

⚠️ 아래 비활성화된 항목들은 비즈 앱으로 전환해야 받을 수 있습니다.
비즈 앱은 사업자 정보를 등록하여 비즈 앱으로 전환할 수 있습니다.


dependencies:
kakao_flutter_sdk: ^1.7.0 # 전체 추가
kakao_flutter_sdk_user: ^1.7.0 # 카카오 로그인
import 'package:kakao_flutter_sdk_common/kakao_flutter_sdk_common.dart';
void main() {
...
// 웹 환경에서 카카오 로그인을 정상적으로 완료하려면 runApp() 호출 전 아래 메서드 호출 필요
WidgetsFlutterBinding.ensureInitialized();
// runApp() 호출 전 Flutter SDK 초기화
KakaoSdk.init(
nativeAppKey: '${YOUR_NATIVE_APP_KEY}',
javaScriptAppKey: '${YOUR_JAVASCRIPT_APP_KEY}',
);
runApp(MyApp());
...
}
YOUR_NATIVE_APP_KEY, YOUR_JAVASCRIPT_APP_KEY는 내 어플리케이션에 앱 키에 들어가면 있습니다.

<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- "kakao${YOUR_NATIVE_APP_KEY}://oauth" 형식의 앱 실행 스킴 설정 -->
<!-- 카카오 로그인 Redirect URI -->
<data android:host="oauth" android:scheme="kakao${YOUR_NATIVE_APP_KEY}" />
</intent-filter>
</activity>


// 카카오 로그인 구현 예제
// 카카오톡 실행 가능 여부 확인
// 카카오톡 실행이 가능하면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (await isKakaoTalkInstalled()) {
try {
await UserApi.instance.loginWithKakaoTalk();
print('카카오톡으로 로그인 성공');
} catch (error) {
print('카카오톡으로 로그인 실패 $error');
// 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
// 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
if (error is PlatformException && error.code == 'CANCELED') {
return;
}
// 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인
try {
await UserApi.instance.loginWithKakaoAccount();
print('카카오계정으로 로그인 성공');
} catch (error) {
print('카카오계정으로 로그인 실패 $error');
}
}
} else {
try {
await UserApi.instance.loginWithKakaoAccount();
print('카카오계정으로 로그인 성공');
} catch (error) {
print('카카오계정으로 로그인 실패 $error');
}
}
현재 로그인한 사용자의 정보를 불러옵니다. UserApi의 me()를 호출합니다.
요청 성공 시, 사용자 정보가 담긴 User 객체가 반환됩니다. 사용자 정보에서 제공 가능한 사용자 정보의 종류를 확인할 수 있습니다. 다음과 같은 경우에는 사용자 정보의 값이 존재하지 않을 수 있으므로 유의합니다.
try {
User user = await UserApi.instance.me();
print('사용자 정보 요청 성공'
'\n회원번호: ${user.id}'
'\n닉네임: ${user.kakaoAccount?.profile?.nickname}'
'\n이메일: ${user.kakaoAccount?.email}');
} catch (error) {
print('사용자 정보 요청 실패 $error');
}