SwiftUI - kakao Login
워낙 카카오 연동규격서가 잘나와있지만, 저의 내용을 기록 하기위해 작성 했습니다.
초간단 연동 방법입니다. 운영하면서 다른내용이 나온다면 추가 하겠습니다.
1. 플랫폼 추가
카카오 회원가입, 어플리케이션 추가는 완료 했다는 가정하에 진행입니다.
내 애플리케이션 -> 앱설정 -> 플랫폼 에서 추가 가능합니다.
번들 ID : Project (General) -> Bundle Indentifier 값을 추가하고
앱스토어 ID, 마켓 URL 같은경우 실제 앱스토어 등록전이라 제외 했습니다.
2. 셋팅
2-1. Pod
kakaoSDK 같은경우 모든 SDK 를 포함하고 있기에 필요시 아래 모듈중 선택할수 있습니다.
필자는 kakaoSDK 으로 진행했습니다.
pod 'KakaoSDK'
pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈
pod 'KakaoSDKAuth' # 사용자 인증
pod 'KakaoSDKUser' # 카카오 로그인, 사용자 관리
pod 'KakaoSDKTalk' # 친구, 메시지(카카오톡)
pod 'KakaoSDKShare' # 메시지(카카오톡 공유)
pod 'KakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함
pod 'KakaoSDKTemplate' # 메시지 템플릿
pod 'KakaoSDKNavi' # 카카오내비
pod 'KakaoSDKCert' # 카카오톡 인증 서비스
2-2. SPM
Project Target -> Package Dependencies -> Packages
https://github.com/kakao/kakao-ios-sdk
GitHub - kakao/kakao-ios-sdk
Contribute to kakao/kakao-ios-sdk development by creating an account on GitHub.
github.com
해당 주소를 입력하여 추가 합니다. Add to Project, Add To Target 상의 모듈 및 프로젝트를 지정해서 설치 해줍니다.
3. 기타 설정
info.plist 파일에 다음과 같이 스키마를 추가 해줍니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>kakaokompassauth</string>
</array>
*iOS 14 부터 LSApplicationQueriesSchemes 키값이 Queried URL Schemes 으로 바뀌었습니다 (상단 이미지 참고)
Source Code 방식으로 수정할경우 LSApplicationQueriesSchemes 키 값으로 추가 합니다. (Property List 방식으로 추가 했습니다)
Project -> Info -> URL Types 에 URL Schemes 를 추가 합니다.
형식은 -> kakao${NATIVE_APP_KET}
KEY 값이 asdcasdckjnscd 라는 가정하에 다음과 같이 셋팅 합니다. (ex: kakaoasdcasdckjnscd)
혹은 info.plist 상에 다음처럼 추가 할수도 있습니다.
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>kakao${NATIVE_APP_KET}</string>
</array>
</dict>
</array>
키값은 카카오 디벨로퍼 내 애플리케이션(앱키) 에서 확인 가능합니다. (네이티브 키)
4. 소스 추가
*모든 방식은 SwiftUI 으로 이용 했습니다. 다른 방법은 연동 규격서 참고 바랍니다.
import SwiftUI
import KakaoSDKCommon
import KakaoSDKAuth
@main
struct TestApp: App {
init() {
// Kakao SDK 초기화
KakaoSDK.initSDK(appKey: "{NATIVE_APP_KEY}")
}
var body: some Scene {
WindowGroup {
ContentView().onOpenURL(perform: { url in
if (AuthApi.isKakaoTalkLoginUrl(url)) {
AuthController.handleOpenUrl(url: url)
}
})
}
}
}
호출 영역 (버튼 클릭시)
import KakaoSDKCommon
import KakaoSDKAuth
import KakaoSDKUser
.onTapGesture {
// 카카오톡 실행 가능 여부 확인
if (UserApi.isKakaoTalkLoginAvailable()) {
UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginWithKakaoTalk() success.")
//do something
_ = oauthToken
}
}
}
}
참고
https://developers.kakao.com/docs/latest/ko/kakaologin/prerequisite
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
https://developers.kakao.com/docs/latest/ko/ios/getting-started
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com