Skip to content

Lbin91/ios_social_login

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 

Repository files navigation

iOS(swift) ์†Œ์…œ ๋กœ๊ทธ์ธ ์—ฐ๊ฒฐํ•˜๊ธฐ

์ตœ๊ทผ ์ƒˆ๋กœ์šด iOS ์•ฑ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ƒˆ๋กญ๊ฒŒ ์†Œ์…œ ๋กœ๊ทธ์ธ ์—ฐ๊ฒฐ์„ ์ž‘์—…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (๊ธฐ์กด ์•ฑ์€ objective-c ์ฝ”๋“œ์— ํƒ€๊ฒŸ ๋ฒ„์ „๋„ ๋‚ฎ์•„์„œ ์žฌํ™œ์šฉ์ด ์‰ฝ์ง€ ์•Š์•„ ๊ฑฐ์˜ ์ƒˆ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค)

๋Œ€๋ถ€๋ถ„ 2022๋…„ 2์›” ๊ธฐ์ค€ ์ตœ์‹  ๋ฒ„์ „์„ ์ฐจ์šฉํ–ˆ์œผ๋‹ˆ ๋‹น๋ถ„๊ฐ„ ์ด ํฌ์ŠคํŠธ๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์ฐธ๊ณ  ๋˜๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

1. KAKAOTALK

์ผ๋‹จ ์ œ๊ฐ€ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๋Š” ์•ฑ์—์„œ๋Š” ์นด์นด์˜คํ†ก์˜ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์˜ ๋ชฉ์ ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. SDK๋Š” cocoapod์„ ์ด์šฉํ•ด ์„ค์น˜ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์€ 2.8.5๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

pod KakaoSDKUser

๊ทธ ํ›„์—๋Š” ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ํŽ˜์ด์ง€์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋“ฑ๋ก ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

iOS ์•ฑ์˜ ๊ฒฝ์šฐ ํ•„์ˆ˜์ ์œผ๋กœ Xcode ํ”„๋กœ์ ํŠธ์˜ Bundle Id๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ ๋ฐœ๊ธ‰๋˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑํ‚ค๋Š” AppDelegate.swift ํŒŒ์ผ์—์„œ ์“ฐ์ž…๋‹ˆ๋‹ค.

import UIKit
import KakaoSDKAuth

class AppDelegate: UIResponder, UIApplicationDelegate {
 
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
     
     //์นด์นด์˜คํ†ก SDK ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ
        KakaoSDK.initSDK(appKey: Appkey.kakao)
     }

Appkey.kakao์˜ ์œ„์น˜์— ๊ฐ์ž ๋ฐœ๊ธ‰ ๋ฐ›์€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ํ‚ค๋ฅผ ์ ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์นด์นด์˜คํ†ก ๋งํฌ ๋™์ž‘์„ ์œ„ํ•ด AppDelegate.swift์— ์ฝ”๋“œ๋ฅผ ๋˜ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        //์นด์นด์˜คํ†ก
        if AuthApi.isKakaoTalkLoginUrl(url) {
            return AuthController.handleOpenUrl(url: url)
        }
        
        return false
    }

iOS 13๋ถ€ํ„ฐ๋Š” SceneDelegate.swift์—์„œ ํ•ด๋‹น ์•ก์…˜์„ ๊ด€๋ฆฌํ•œ๋‹ค๋Š”๊ตฐ์š”.

import UIKit
import KakaoSDKAuth
 
 class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        if let url = URLContexts.first?.url {
            if AuthApi.isKakaoTalkLoginUrl(url) {
                _ = AuthController.handleOpenUrl(url: url)
            }
        }
    }
 }

iOS 13 ์ด์ „๋ฒ„์ „์„ ์ง€์›ํ•œ๋‹ค๋ฉด Appdelegate.swift์—๋„ ์ž‘์—…์ด ํ•„์š”ํ• ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž ์ด์ œ ์ง์ ‘์ ์ธ ๋กœ๊ทธ์ธ ํŒŒํŠธ ์ž…๋‹ˆ๋‹ค.

         if UserApi.isKakaoTalkLoginAvailable() {
             UserApi.shared.loginWithKakaoTalk(channelPublicIds: nil, serviceTerms: nil) { (oauthToken, error) in
                 if let error = error {
                 }
                 else {
                 //(1) ์นด์นด์˜ค ์•ฑ์œผ๋กœ ๋กœ๊ทธ์ธ ์„ฑ๊ณต
                 
                 }
             }
         }
         else {
            //(2) ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ
            UserApi.shared.loginWithKakaoAccount(prompts: nil, channelPublicIds: nil, serviceTerms: nil) { (oauthToken, error) in
             if let error = error {
                 print(error)
             }
             else {
                 print("Login Kakao account Success.")
                 //์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ์„ฑ๊ณต
             }
         }
         }

๊ธฐ์กด ๋ฉ”๋‰ด์–ผ ๋Œ€๋กœ์˜ ์ฝ”๋“œ์—์„œ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

์นด์นด์˜คํ†ก ์•ฑ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋Š” ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•˜๋„๋ก ์ž‘์—…ํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

๊ณต์‹ ํŽ˜์ด์ง€์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ 2.8.5 ๊ธฐ์ค€์œผ๋กœ ์ตœ์‹ ๋ฒ„์ „์ด ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š์€๋“ฏ ํ–ˆ์Šต๋‹ˆ๋‹ค.

prompts, channelPublicIds,serviceTerms ๋“ฑ์— ์–ด๋–ค ์ •๋ณด๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ด๋„ ์ž‘์—…๋œ ๋ธ”๋กœ๊ทธ ๋“ค๋„ ์—†์–ด ๋‹นํ™ฉํ•˜๋˜ ์ค‘์— ์ผ๋‹จ nil์„ ๋„ฃ์–ด๋„ ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์—†์–ด nil์„ ๋„ฃ์–ด ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ info.plist์˜ CFBundleURLTypes์— kakao url scheme์„ ๋“ฑ๋กํ•ด์•ผํ•˜๊ณ (kakao$(kakaoAppkey))

LSApplicationQueriesSchemes์—๋„ kakaokompassauth,kakaolink ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•๊นŒ์ง€ ํ•ด์ค€๋‹ค๋ฉด ์นด์นด์˜คํ†ก์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธ์— ์“ฐ์ด๋Š” AccessToken์ด๋‚˜ ํ”„๋กœํ•„ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

About

for ios developer, share tip for social login

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors