HIT해
[iOS/Swift] 카카오 로그인 KakaoOpenSDK 2.21.1 본문
https://developers.kakao.com/docs/latest/ko/ios/getting-started#import
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
1. 패키지 추가
먼저 SPM(Swift Package Manager)으로 KakaoSDK를 설치한다.
Xcode에서 Project Target > Package Dependencies > + 클릭
Repository를 입력해주어야하는데
내 프로젝트는 RXSwift가 아니라 TCA를 사용하기 때문에, RxKakaoSDK가 아닌 KakaoSDK를 선택했다.
버전은 2.2.0으로 지정해야 설치 오류 없이 진행된다.
KakaoSDK 만 체크해도 필요한 모듈(KakaoSDKCommon, KakaoSDKAuth, KakaoSDKUser 등)이 한 번에 설치된다.
2. info.plist 설정
<key>LSApplicationQueriesSchemes</key>
<array>
<string>kakaokompassauth</string>
</array>
3.AppDelegate, SceneDelegate class 추가
카카오 로그인을 위해 URL Scheme 처리가 필요하다.
SwiftUI 라이프사이클을 쓰는 경우에도,
아래와 같이 AppDelegate/SceneDelegate를 구현하거나 UIApplicationDelegateAdaptor를 활용해야 한다.
import KakaoSDKAuth
...
class AppDelegate: UIResponder, UIApplicationDelegate {
...
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if (AuthApi.isKakaoTalkLoginUrl(url)) {
return AuthController.handleOpenUrl(url: url)
}
return false
}
...
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
if (AuthApi.isKakaoTalkLoginUrl(url)) {
_ = AuthController.handleOpenUrl(url: url)
}
}
}
...
}
iOS 13이상이면 SceneDelegate 이하라면 AppDelegate를 추가하자.
4.NativeKey 등록
카카오 개발자 콘솔에서 받은 네이티브 앱 키를 SDK 초기화에 사용한다.
import KakaoSDKCommon
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
KakaoSDK.initSDK(appKey: "${NATIVE_APP_KEY}")
...
}
@main struct의 init()에서 초기화 코드를 넣으면 된다.
5. 로그인 버튼 구현
카카오톡 앱이 설치되어 있으면 앱으로, 없으면 계정 웹 로그인으로 분기 처리한다.
Button({if (UserApi.isKakaoTalkLoginAvailable()) {
UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginWithKakaoTalk() success.")
// 성공 시 동작 구현
_ = oauthToken
}
}
}
}){
Text("카카오")
}
6. 오류가 발생한다면?
여기까지 공식문서대로, 그리고 위 설정대로 모두 했는데도 로그인 동작이 안 된다면
대부분 백엔드(카카오 개발자 콘솔) 설정 문제일 가능성이 높다.
'Swift > UIKit 개발 노트' 카테고리의 다른 글
[SwiftUI] 전역적인 햅틱 관리 HapticsManager 2.2.0 (1) | 2025.04.29 |
---|---|
[Trouble Shooting]No signing certificate "iOS Development" foundNo "iOS Development" signing certificate matching team ID (0) | 2025.04.17 |
[스-노우맨] 2.0 업데이트 후기 (0) | 2025.03.19 |
[스-노우맨] 앱스토어 배포 후기 (2) | 2025.03.10 |
블렌더로 냉동실 제작하기 (0) | 2025.03.04 |