clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Swift
  • ㅅ
  • Q
  • uikit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

IOS - Firebase Auth Google login
Firebase

IOS - Firebase Auth Google login

2022. 2. 24. 12:35

Firebase 접속, Authentication접속

sign-in method 탬에서  제공업체 구글을 선택해준다.

여기서 프로젝트의 공개용 이름은 차후에 구글 권한을 요청할 때에 사용자에게  "앱이름" 이 사용자 권한을 요청합니다. 라는 의미를 표시할떄 사용되는 이름이다.

이름을 설정해주고 저장을 누른다.

구글 로그인을 사용하려면 podfile에 추가적으로 추가해야하는 podfile이 있다.

 

해당 프로젝트의 podfile을 열어준 후 아래를 입력해주고, 해당 프로젝트의 터미널에서 pod install을 해준다.

pod 'GoogleSignIn'

 

m1 맥북이며, 에러가 발생한다면

pod install 대신

$ sudo arch -x86_64 gem install ffi
$ arch -x86_64 pod install

이렇게 해주면 pod들이 업데이트 된다.

 

이 후, 구글 로그인을 사용하려면 맟춤 URL 스키마를 구성해주어야한다.

Xcode에 가서 프로젝트를 선택하고, 

타겟에서 Info -> URL Types -> +버튼 

반전된 클라이언트 아이디의 URL 스키마를 추가해주면 되는데, 이 말은

스키마 값은 Firebase를 설치할 때 추가했던 GoogleService-Info.plist를 열어보면 내부에 이미 REVERSED_CLIENT_ID값이 있다.

값을 복사 한 후, URL Types에 URL Schemes에 넣어준다.

다른 필드는 비어있어도 좋다. 이 값은 앱 서비스마다 모두 다른 값을 가지고, 구글은 권한을 위임한 서비스를 구분하게 된다.

이렇게 되면 사전작업은 모두 끝난다.

 

이 후 AppDelegate파일에 import GoogleSignIn해주고, google로 로그인 버튼이 있는 파일에도 import 해주며,

또한 AppDelegate에서 didFinishLaunchingWithOptions에서  FirebaseApp객체를 구성한다

FirebaseApp.configure()

또한 AppDelegate에서 함수 하나를 정의해 주는데, 이 메서드는 GIDSignIn 인스턴스의handleURL 메서드를 호출하여 인증 프로세스가 끝날 때 어플리케이션이 수신하는 URL을 적절히 처리해 준다

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
        return GIDSignIn.sharedInstance.handle(url)
    }

 

google로 로그인 버튼의 속성을 바꿔준다.

    @IBOutlet weak var googleLoginButton: GIDSignInButton!

GIDSignInButton타입은 UIButton타입을 상속 하면서, 구글 로그인을 실행시켜주는 GoogleSignInSDK의 개체이다.

 

액션 탭

 

GIDSignInButton은 자동적으로 GIDSignIn을 호출하지 않는다. 그래서 파일 내에 googleLoginButtonAction IBAction메서드 내에 구현을 해주어야 한다.

 

guard let clientID =  FirebaseApp.app()?.options.clientID else { return }
        
        //구글 SignIn 객체를 만든다
        let config = GIDConfiguration(clientID: clientID)
        
        //구글로그인을 시작한다.
        GIDSignIn.sharedInstance.signIn(with: config, presenting: self) { [unowned self] user, error in
          if let error = error {
              print("ERROR", error.localizedDescription)
            return
          }
		
          guard let authentication = user?.authentication,
                let idToken = authentication.idToken else { return }
                
          let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)

            Auth.auth().signIn(with: credential) { _, _ in
                self.showMainViewController()
            }
        }

앱의 프레젠테이션 뷰 컨트롤러 및 클라이언트 ID를 구글 로그인의 로그인 메서드에 전달한 후 반환되는 GOogle인증 토큰으로 부터 Firebase사용자 인증 정보를 만든다.

 

저작자표시 비영리 동일조건 (새창열림)
    'Firebase' 카테고리의 다른 글
    • Database
    • IOS - Firebase 비밀번호 변경
    • IOS - Use Firebase Authentication
    • IOS - Use Firebase
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바