본문 바로가기
다시 개발자

swiftui, OAuth 방식으로 google login 구현

by 까삼스 이삐 2023. 8. 4.
728x90
반응형

SwiftUI로 iOS에 google 계정(gmail)으로 로그인할 수 있도록 구현하는 방법입니다.

 

1. GoogleSignInSwiftSupport 라이브러리 설치

아래 글을 참조해서 GoogleSignInSwiftSupport를 설치합니다.

https://kka3seb.tistory.com/1074

 

xcode에 CocoaPods 라이브러리 적용하기

xcode에 CocoaPods 라이브러리를 적용하는 방법입니다. 기존 단순 프로젝트 구조는 다음과 같습니다. MyProject/ MyProject.xcodeproj 여기에 CocoaPods 라이브러리를 사용하면 프로젝트 구조는 다음과 같이 변

kka3seb.tistory.com

 

2. OAuth 클라이언트 ID 만들기

아래 글을 참조해서 OAuth 클라이언트 ID를 만듭니다.

2023.08.06 - [다시 개발자] - OAuth 클라이언트 ID와 OAuth 서버 클라이언트 ID 만들기

 

OAuth 클라이언트 ID와 OAuth 서버 클라이언트 ID 만들기

OAuth 클라이언트 ID와 OAuth 서버 클라이언트 ID 만드는 방법입니다. 1. OAuth 클라이언트 ID 만들기 아래 사이트에 접속을 합니다. https://developers.google.com/identity/sign-in/ios/start-integrating?hl=ko iOS 및 macOS

kka3seb.tistory.com

 

3. GIDClientID 입력

info.plist에 "GIDClientID"를 Key에 입력하고 클라이언트 ID를 value에 입력합니다.

 

이때 주의해야 할 사항은 "GIDClientID"는 default Info Key 리스트에 없기 때문에 직접 입력해야 한다는 것입니다.

 

4. URL Scheme 추가

Info 화면에서 "URL Types"을 연 다음 "+"를 클릭합니다.

 

URL Schemes에 OAuth 클라이언트 ID를 만들 때 생성된 "iOS URL 스키마"를 입력합니다.

 

참고로, iOS URL 스키마는 사용자 인증 정보 화면에서 "OAuth client"를 클릭하면 Additional Information에 "iOS URL 스키마"로 확인할 수 있습니다.

 

5. Swiftui로 구현

 

GoogleLoginView.swift를 만들어서 다음과 같이 구현합니다.

import SwiftUI
import GoogleSignInSwift
import GoogleSignIn


struct GoogleLoginView: View {
    
    var body: some View {
       
        VStack {
            GoogleSignInButton (scheme: .light, style: .wide) {
                googleSign()
            }
            .frame(width: 300, height: 60, alignment: .center)
        }
    }
    
    func googleSign() {
        guard let googleSignInViewController = (UIApplication.shared.connectedScenes.first as? UIWindowScene)?.windows.first?.rootViewController else { return }
        GIDSignIn.sharedInstance.signIn(withPresenting: googleSignInViewController) { signInResult, error in
            
            guard error == nil else { return }
            guard let signInResult = signInResult else { return }
            guard let profile = signInResult.user.profile else { return }
            
            print(profile.email)
            
        }
    }
}

 

main에서 GoogleLoginView를 다음과 같이 호출하면 됩니다.

import SwiftUI
import GoogleSignIn


@main
struct simpleLoginLibApp: App {
    var body: some Scene {
        WindowGroup {
            GoogleLoginView()
                .onOpenURL { url in
                    GIDSignIn.sharedInstance.handle(url)
                }
        }
    }
}

 

실행 화면은 다음과 같습니다.

 

만약 서버에 token을 보내 추가 인증을 원하면  다음 글을 참조하셔서 작성하시면 됩니다.

(추후에 글을 추가하도록 하겠습니다.)

https://developers.google.com/identity/sign-in/ios/start-integrating?hl=ko#get_an_oauth_client_id 

 

iOS 및 macOS용 Google 로그인 시작하기  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 iOS 및 macOS용 Google 로그인 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류

developers.google.com

https://developers.google.com/identity/sign-in/ios/backend-auth?hl=ko 

 

백엔드 서버로 인증  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 백엔드 서버로 인증 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 백엔드

developers.google.com

 

728x90
반응형

댓글