SwiftUI로 iOS에 google 계정(gmail)으로 로그인할 수 있도록 구현하는 방법입니다.
1. GoogleSignInSwiftSupport 라이브러리 설치
아래 글을 참조해서 GoogleSignInSwiftSupport를 설치합니다.
https://kka3seb.tistory.com/1074
2. OAuth 클라이언트 ID 만들기
아래 글을 참조해서 OAuth 클라이언트 ID를 만듭니다.
2023.08.06 - [다시 개발자] - OAuth 클라이언트 ID와 OAuth 서버 클라이언트 ID 만들기
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
https://developers.google.com/identity/sign-in/ios/backend-auth?hl=ko
'다시 개발자' 카테고리의 다른 글
swiftui, kakao 계정으로 간편 로그인 구현 (16) | 2023.08.08 |
---|---|
OAuth 클라이언트 ID와 OAuth 서버 클라이언트 ID 만들기 (19) | 2023.08.06 |
App 심사 NSUserTrackingUsageDescription 문제 해결 (21) | 2023.08.04 |
iOS app-ads.txt 추가 또는 업데이트 (27) | 2023.08.03 |
swiftui로 admob 광고 붙이기 (16) | 2023.07.19 |
댓글