본문 바로가기
iOS/iOS 프로그래밍

iOS 카카오 로그인 연동 (Swift)

by shinyou1024 2020. 5. 24.

카카오 로그인!!

준비

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

1. 애플리케이션을 추가한다

2. 동의항목 탭에서 프로필 정보의 상태를 필수 동의로 바꿔준다

3. 카카오 로그인 탭에서 활성화 설정 상태를 ON으로 바꿔준다

Kakao SDK 연동

  1. Kakao SDK 다운로드

    Kakao Developers

  2. '+' 버튼을 눌러서 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
        
    }

}

 

 

참고

 

Swift로 카카오 로그인 구현하기

카카오SDK설치 아래 사진에서 파란색 SDK 다운로드를 누르면 다운로드가 가능하다, SDK 압축풀고 xcode의 General에 아래 Frameworks, Libraries, and Embedded Content 이 부분에 플러스 버튼을 눌러준다. (난..

fomaios.tistory.com

 

'iOS > iOS 프로그래밍' 카테고리의 다른 글

iOS 애플리케이션 구조와 개발 아키텍처  (0) 2020.05.20

댓글