본문 바로가기
Coding/Etc

[iOS/Swift] 카카오톡 로그인 연동하기

by Hide­ 2018. 1. 3.
반응형

먼저 카카오톡 개발자 등록을 해야한다.

아래의 주소로 들어간다.


https://developer.kakao.com/


로그인한다.


앱 만들기를 누르면 키가 발급된다.

여기서 설정을 누른다.


플랫폼 추가를 누른다.


먼저 스위프트 프로젝트로 들어가서 Bundle Identifier를 확인한다.


iOS를 선택 후 아까 확인한 번들을 입력하고 추가를 누른다.


왼쪽 설정에서 사용자 관리로 들어간 후 ON으로 바꿔준다.

그리고 수집할 정보를 선택하고 저장을 누른다.

다음으로 아래의 URL을 눌러서 SDK를 다운받는다.


https://developers.kakao.com/sdk/latest-ios-sdk


압축을 풀고 KakaoOpenSDK.framework 를 내 프로젝트로 끌어온다.


Linking - Other Linker Flags에 -all_load를 입력해준다.


info.plist에 KAKAO_APP_KEY라는 키를 만들고

이전에 발급받은 네이티브 앱 키를 값으로 넣어준다.


URL Schemes를 추가해준다.

네이티브앱 키 앞에 kakao를 붙여서 넣어줘야한다.

그리고 info.plist를 Open As - Source Code로 열고 아래의 코드를 추가한다.


<key>LSApplicationQueriesSchemes</key>

<array>

    <string>kakao네이티브앱키</string>

    <string>kakaokompassauth</string>

    <string>storykompassauth</string>

    <string>kakaolink</string>

    <string>kakaotalk-4.5.0</string>

    <string>kakaostory-2.9.0</string>

    <string>storylink</string>

</array>


다음으로 브릿지 헤더를 만들어줘야 한다.


브라우저 창에서 오른쪽 클릭 - New File을 누르고

C++ File을 선택한 후 Next를 누른다.


임의로 이름을 정하고 Next를 누른다.


Create Bridging Header를 누른다.


#import <KakaoOpenSDK/KakaoOpenSDK.h>를 입력해준다.

다음으로 AppDelegate.swift 파일을 연다.


아래의 소스를 추가해준다.


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.


        //firebase

        FIRApp.configure()



        //facebook

        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions:launchOptions)

    }

    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

        //kakao

        if KOSession.isKakaoAccountLoginCallback(url) {

            return KOSession.handleOpenURL(url)

        }

        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

    }


    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {

        //kakao

        if KOSession.isKakaoAccountLoginCallback(url) {

            return KOSession.handleOpenURL(url)

        }

        return false

    }