본문 바로가기
🍎 iOS/iOS

[iOS/API] Swift로 카카오 로그인 구현하기

by Fomagran 💻 2020. 2. 7.
728x90
반응형

카카오SDK설치

아래 사진에서 파란색 SDK 다운로드를 누르면 다운로드가 가능하다,

SDK 압축풀고 xcode의 General에 아래 Frameworks, Libraries, and Embedded Content 이 부분에 플러스 버튼을 눌러준다. (난 이미 연결해놓은 상태라 카카오오픈SDK프레임워크가 있는데 원랜 비어있다.)

누르면 이와 같은 사진이 뜨는데 좌측하단 Add Other에서 Add Files를 눌러준다

그리고 아까 다운받았던 SDK에서 KakaoOpenSDK.framework를 추가해준다.

그러면 다음과 같이 추가되있는 걸 볼 수 있을 것이다.

그리고 Build Settings의 Linking의 Other Linker Flags에 -all_load를 넣어준다

그리고 카카오 디벨로퍼 사이트에 들어가서 우측하단 내 애플리케이션으로 들어가서 좌측 하단 앱 만들기를 눌러준다.

앱 이름과 회사명을 각자 자신에 맞게 적어주면

이와 같이 4개의 키를 받을 수 있다.(이 앱은 바로 삭제했다.)

그리고 아래를 보면 설정이라고 있는데 그 부분을 누르고

안에 플랫폼에 플랫폼추가를 누르면 이러한 화면이 나오는데 자신의 번들 ID를 적어준다.

그리고 다시 Xcode로 가서 Info의 URL Types에 URL Schemes에 자신의 네이티브 앱키를 추가해주는데 반드시 앞에 kakao를 붙여서 적어준다. ex)네이티브앱키 aasdfasdfvb -> kakaoaasdfasdfvb

그리고 info.plist파일을 누른 뒤 Property에 KAKAO_APP_KEY를 만들어주고 여기에 자신의 네이티브앱키를 또 적어준다 여기에선

kakao를 안붙여도 된다.

그리고 info.plist를 소스코드로 열어서 아래의 코드를 붙여넣어준다.

 <key>LSApplicationQueriesSchemes</key>
    <array>
        <!-- 공통 -->
        <string>kakaoa93742f25207d361ba62c6dd859857a4</string>

        <!-- 간편로그인 -->
        <string>kakaokompassauth</string>
        <string>storykompassauth</string>

        <!-- 카카오톡링크 -->
        <string>kakaolink</string>
        <string>kakaotalk-5.9.7</string>

        <!-- 카카오스토리링크 -->
        <string>storylink</string>
    </array>

그리고 다운받았던 SDK에서 samples -> swift -> KakaoSample을 들어가면 아래와 같이 KakaoOpenSDK-Bridging-Header.h가 있다.

이걸 프로젝트 안에 넣어주고

Build Segtting으로 이동한 뒤 Swift Compiler에서 Objecgtive-C Bridging Header에 ./자신의 프로젝트명/KakoOpenSDK-Bridging-Header.h를 넣어준다.

그리고 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
    }

뷰컨트롤러로 이동해 아래 코드를 넣어준다.

레이아웃도 따로 해준다.

import UIKit

class ViewController: 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 = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
        layout()
      }
      
      @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 }
            
           
          })
        }
      }

      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
      }
    }

이렇게 완성하면 다음과 같이 정상적으로 작동된다.

디벨로퍼 퓨리님의 블로그를 참조했습니다.

https://developer-fury.tistory.com/19

 

[Swift] 카카오 로그인 API 사용하기

Swift에서 Kakao Login API 사용하기 Record 작성일 2019. 08. 21 (수) Swift 버전 Swift 5 Xcode 버전 10.3 안녕하세요 Fury입니다 :] 네아로에 이어 Kakao Login in Swift를 진행해 보도록 하겠습니다~ (짝짝짝..

developer-fury.tistory.com

마지막으로 사용자 정보를 받아오려면 내 애플리케이션에서 사용자 관리에 가서 ON으로 해줘야 정보를 받아올 수 있다.

안그럼 이러한 오류가 발생할 수 있다.

728x90
반응형

댓글