티스토리 뷰
반응형
로그인 모듈 두 번째 시간으로 구글 로그인에 관해서 공유 하겠습니다.
Pod 연결 및 구글 SDK 연결은 링크를 확인해주세요.
Pod 연결 및 PodFile 업데이트는 위의 두 링크에서 작업한 후 AppDelegate로 이동합니다.
(구글 가이드 문서를 기반으로 작업하시고 부족한 부분만 참고 하는 목적으로 작성하였습니다.)
Application Firebase 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import Firebase import GoogleSignIn ... func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. FirebaseApp.configure() // 로그인 대리자 설정 GIDSignIn.sharedInstance().clientID = "YOUR_CLENT_ID" // Google 에서 발급 받은 ID GIDSignIn.sharedInstance().delegate = self return true } |
Application에서 handleOpen 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // MARK: Google Login, Kakao Login // GIDSignIn 인스턴스의 handleURL 메소드를 호출하며 이 메소드는 애플리케이션이 인증 절차가 끝나고 받는 URL를 적절히 처리합니다. @available(iOS 9.0, *) func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { if KOSession.isKakaoAccountLoginCallback(url) { return KOSession.handleOpen(url) } return GIDSignIn.sharedInstance().handle(url,sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:]) } // ios 이상에서 앱 실행 시 해당 메소드를 구현해야 합니다. func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if KOSession.isKakaoAccountLoginCallback(url) { return KOSession.handleOpen(url) } //구글 로그인 시 사용하는 부분 입니다. 리턴은 Bool 형태로 구성되어 있어서, 단독 사용시 return 에 바로 입력하셔도 됩니다. let googleSession = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation) return googleSession } |
Google 계정에서 정보를 이용 SignIn 구현
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // 로그인 프로세스를 처리합니다. // 여기서는 로그인 시도 시 구현된 ViewController에서 실행하도록 하였습니다. func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { if let err = error { print("LoginViewController:error = \(err)") return } guard let authentication = user.authentication else { return } let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, accessToken: authentication.accessToken) Auth.auth().signIn(with: credential) { (user, error) in // ... if let err = error { print("LoginViewController: error = \(err)") return } // todo... // 넘어오는 값을 기준으로 회원가입을 진행하면 됩니다. print("name: \(user?.displayName)") print("name: \(user?.email)") } } @nonobjc func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!, withError error: NSError!) { // Perform any operations when the user disconnects from app here. // ... if let clintID = signIn.clientID { print("AppDelegate:signIn:clintID : \(clintID)") } } |
코드의 주석으로 자세한 설명을 대체하였습니다.
AppDelegate에서 구글 로그인 정보 가져올 준비 후에 사용하는 곳에서 GIDSignIn.sharedInstance().signIn()을 호출하면 구글로그인을 활용 할 수 있습니다.
1 2 3 4 5 | GIDSignIn.sharedInstance().signIn() if GIDSignIn.sharedInstance().currentUser != nil { GIDSignIn.sharedInstance().signIn() } |
Google Schemes 등록
마지막으로 Google URL Schemes 을 등록해야 합니다.
Google Developer 에서는 Callback URL type을 설정해야한다고 나와있습니다.
발급 받은 CLIENT_ID 을 'com.googleusercontent.apps.1234567890-abcdefg' 형태로 넣어줍니다.
[SWIFT3] 로그인 모듈 구성 [1/3] - 카카오 로그인
[SWIFT3] 로그인 모듈 구성 [3/3] - 페이스북 로그인
정리
구글로그인을 활용하는 방법에 대해서 알아봤습니다.
로그인 모듈 전체 소스는 여기 에서 확인 가능합니다.
반응형
'프로그래밍 > iOS' 카테고리의 다른 글
[SWIFT] DatePickerView 스크롤 시 다른 기능 방지 (0) | 2017.12.22 |
---|---|
[SWIFT] 로그인 모듈 구성 [3/3] - 페이스북 로그인 (0) | 2017.12.20 |
[SWIFT] 로그인 모듈 구성 [1/3] -카카오 로그인 (2) | 2017.12.20 |
[Apple] 엔터프라이즈 계정신청 (Enterprise Program) (8) | 2017.12.19 |
[Apple] Agent 계정 이관 하는 법 (0) | 2017.12.19 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- missionchina
- 코틀린
- java
- issue
- 알고리즘
- swift
- IOS
- 점수판
- IT
- 스코어헬퍼
- DI
- 미션차이나센터
- RXjava
- 패턴
- Kotlin
- 디자인패턴
- flutter
- 안드로이드
- 고시문헬퍼
- missioon
- MCC
- Android Studio
- 임용고시
- 고시문
- 탁구
- 선교
- view
- Android
- push
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함