-
카카오 간편 로그인 연동Language/iOS,AOS 2023. 2. 20. 23:06
1. Kakao 개발자 사이트 앱 등록 (스킵)
카카오 개발자 사이트 접속 후 앱 등록
2. SDK 설치
코코아팟으로 SDK 설치합니다.
참조 : https://dchkang83.tistory.com/104
카카오 개발자 문서를 보면 아래와 같이 친절히 설명되어 있습니다.
참조 : https://developers.kakao.com/docs/latest/ko/getting-started/sdk-ios
# 전체 추가 pod 'KakaoSDK' # or # 필요한 모듈 추가 pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈 pod 'KakaoSDKAuth' # 사용자 인증 pod 'KakaoSDKUser' # 카카오 로그인, 사용자 관리 pod 'KakaoSDKTalk' # 친구, 메시지(카카오톡) pod 'KakaoSDKStory' # 카카오스토리 pod 'KakaoSDKShare' # 메시지(카카오톡 공유) pod 'KakaoSDKTemplate' # 메시지 템플릿 pod 'KakaoSDKNavi' # 카카오내비 pod 'KakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함
필자는 로그인 부분만 처리할 거라서 모두 설치는 안하고 아래와 같이 필요한 것만 설치하겠습니다.
target 'gobang' do ... # 카카오 pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈 pod 'KakaoSDKAuth' # 사용자 인증 pod 'KakaoSDKUser' # 카카오 로그인, 사용자 관리 ... end
SDK 설치가 완료되었다면 Xcode를 재시작 해주시고 라이브러리가 인식할 수 있도록 해줍니다.
3. Xcode 설정
3.1. 앱 실행 허용 목록 설정하기
iOS 9.0 이상에서 iOS SDK를 통해 카카오톡, 카카오스토리 등 애플리케이션을 실행시키는 기능을 이용하려면 info.plish 파일에 앱 실행 허용 목록을 설정해야 한다고 합니다.
Info -> Open As -> Source Code
info.plist 에 LSApplicationQueriesSchemes를 추가하고 해당 키의 item으로 kakaokompassauth, kakaolink 추가
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ... <key>LSApplicationQueriesSchemes</key> <array> <string>kakaokompassauth</string> <string>kakaolink</string> </array> ... </dict> </plist>
3.2. URL Schemes 설정하기
카카오계정을 통한 인증과 카카오톡 메시지를 통한 앱 실행을 위해 URL Schemes 설정을 해줘야 합니다.
TARGETS -> Info -> URL Types -> URL Schemes 항목에 네이티브 앱 키를 kakao${NATIVE_APP_KEY} 형식으로 등록합니다.
4. AppDelegate, SceneDelegate 설정
4.1 SDK 초기화
AppDelegate.swift 파일에 다음과 같이 kakaoSDK 초기화 코드를 추가
import KakaoSDKCommon @main class AppDelegate: UIResponder, UIApplicationDelegate { ... func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { ... // KakaoSDK.initSDK(appKey: "${NATIVE_APP_KEY}") KakaoSDK.initSDK(appKey: "test12345") ... } ... }
4.2. handleOpenURL
서비스 앱에서 카카오톡으로 이동한 후 사용자가 동의 또는 로그인 취소 버튼을 누르면 카카오톡에서 서비스 앱으로 이동하는 과정을 거칩니다.
카카오톡에서 서비스 앱으로 돌아왔을 때 로그인 처리를 정상적으로 완료하기 위해 AppDelegate.swift 파일에 handleOpenUrl()함수 추가가 필요 합니다.
- iOS 13 이상 (SceneDelegate를 기본으로 사용, 필자 해당)
import KakaoSDKAuth 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 이하 (AppDelegate를 기본으로 사용)
import KakaoSDKAuth @main 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 } ... }
5. 로그인 구현
func loginWithKakao() { if (UserApi.isKakaoTalkLoginAvailable()) { // 카톡 설치되어있으면 -> 카톡으로 로그인 UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in if let error = error { print(error) } else { print("카톡으로 로그인 성공") _ = oauthToken } } } else { // 카톡 없으면 -> 계정으로 로그인 UserApi.shared.loginWithKakaoAccount { (oauthToken, error) in if let error = error { print(error) } else { print("카카오 계정으로 로그인 성공") _ = oauthToken } } } }
에러!
2023-02-21 10:23:31911 [ℹ️][Api.swift 130:41] -> response:
Optional({
error = misconfigured;
"error_code" = KOE009;
"error_description" = "invalid android_key_hash or ios_bundle_id or web_site_url";
})
플랫폼에 등록되지 않았기 때문이다, Kakao Developers의 앱 설정에 들어가 iOS플랫폼을 등록한다.
참조 :
https://soobaaaam.tistory.com/24
참조
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-ios
https://leechanho.tistory.com/48
'Language > iOS,AOS' 카테고리의 다른 글
페이스북 간편 로그인 (0) 2023.02.23 네이버 간편 로그인 연동 (0) 2023.02.21 Xcode Swift에서 GIF 사용 (0) 2023.02.20 Swift와 코코아팟으로 생성된 프로젝트 복사 (0) 2023.02.17 카메라/사진/위치 권한 추가 (0) 2023.02.16