준비
1. 애플리케이션을 추가한다
2. 동의항목 탭에서 프로필 정보의 상태를 필수 동의로 바꿔준다
3. 카카오 로그인 탭에서 활성화 설정 상태를 ON으로 바꿔준다
Kakao SDK 연동
-
Kakao SDK 다운로드
- '+' 버튼을 눌러서 KakaoOpenSDK와 KakaoMessageTemplate을 임포트
KakaoOpen SDK만 넣었더니 오류가 났다..!
3. Build Settings 탭에서 All을 선택한 후 Linking의 Other Linker Flags를 -all_load로 설정
4. Info 탭에서 URL Types 추가
URL_Schemas에 kakao를 쓰고 뒤에 앱 키를 복붙
5. Info.plist 파일에 KAKAO_APP_KEY 항목을 추가
Type : String
Value : 네이티브 앱 키 값
6. Info.plist 파일을 우클릭 - Open As - Source Code 한 후, 아래 코드 추가
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 공통 -->
<string>kakao네이티브앱키</string>
<!-- 간편로그인 -->
<string>kakaokompassauth</string>
<string>storykompassauth</string>
<!-- 카카오톡링크 -->
<string>kakaolink</string>
<string>kakaotalk-5.9.7</string>
</array>
7. AppDelegate에 아래 코드 추가
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if KOSession.isKakaoAccountLoginCallback(url.absoluteURL) {
return KOSession.handleOpen(url)
}
return true
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if KOSession.isKakaoAccountLoginCallback(url.absoluteURL) {
return KOSession.handleOpen(url)
}
return true
}
로그인 구현
헤더 추가
1. KakaoOpenSDK-Bridging-Header 파일 추가
SDK 폴더에 samples - swift - KakaoSample안에 있다
드래그해서 넣어주자!
2. Build Settings에서 경로 잡아주기
Objective-C Bridging Header의 값을 KakaoOpenSDK-Bridging-Header.h로 설정해준다
소스코드
LoginViewController를 만들어서 구현해줬습니다.
import UIKit
import KakaoOpenSDK
class LoginViewController: UIViewController {
private let loginButton: KOLoginButton = {
let button = KOLoginButton()
button.addTarget(self, action: #selector(touchUpLoginButton(_:)), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
layout()
// Do any additional setup after loading the view.
}
@objc private func touchUpLoginButton(_ sender: UIButton) {
guard let session = KOSession.shared() else {
return
}
if session.isOpen() {
session.close()
}
session.open { (error) in
if error != nil || !session.isOpen() { return }
KOSessionTask.userMeTask(completion: {(error, user) in
guard let user = user,
let email = user.account?.email,
let nickname = user.nickname else { return }
})
// 로그인 후 다른 화면으로 전환하기
self.performSegue(withIdentifier: "MainViewSegue", sender: sender)
}
}
private func layout() {
let guide = view.safeAreaLayoutGuide
view.addSubview(loginButton)
loginButton.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 20).isActive = true
loginButton.trailingAnchor.constraint(equalTo: guide.trailingAnchor, constant: -20).isActive = true
loginButton.bottomAnchor.constraint(equalTo: guide.bottomAnchor, constant: -30).isActive = true
loginButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
}
}
참고
'iOS > iOS 프로그래밍' 카테고리의 다른 글
iOS 애플리케이션 구조와 개발 아키텍처 (0) | 2020.05.20 |
---|
댓글