[Swift] GoogleOauth2.0

RYEOL·2024년 2월 13일

Swift

목록 보기
6/14
post-thumbnail

Swift 구글 로그인 관련 공부 내용 정리

작업 배경

기존에 진행하던 프로젝트 로그인을 파이어베이스를 사용했는데 짧은 토큰 유지시간으로 인해서 푸쉬알림 기능에 어려움이 있을 수도 있다고 판단
로그인 로직을 전체 수정하기로 결정

Google Oauth Client

구글 로그인 관련 클라이언트 생성하고
생성된 클라이언트 ID를
Info.plist에 urlScheme으로 추가한다
반대로 추가해야함!!
=> 만약 aa.bbb.com 이런식이면 com.bbb.aa 이렇게 변경해서 추가

Oauth 로그인 관련 코드

구글 로그인 버튼을 만들었다는 가정하에

loginView.googleSignInButton.addTarget(self, action: #selector(handleGoogleSignIn), for: .touchUpInside)

위처럼 타겟을 추가해주고

 @objc private func handleGoogleSignIn() {
        print("Google Sign in button tapped")
        
        // Start the sign in flow!
        GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, error in
            guard error == nil else { return }
            guard let signInResult = signInResult else { return }
            
            signInResult.user.refreshTokensIfNeeded { user, error in
                guard error == nil else { return }
                guard let user = user else { return }
                
                let idToken = user.idToken?.tokenString

이렇게 코드를 작성하면 idToken 이라는 걸 가저올 수 있는데
내 백엔드 서버와 소통할 때 해당 idToken을 보내주면 된다

 AF.request("\(baseURL)/api/\(provider)/token", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
            .responseDecodable(of: LoginDTO.self) { response in
                switch response.result {
                case .success(let loginDTO):
                    // 성공 시의 처리
                    completion(.success(loginDTO))
                case .failure(let error):

이런식으로 서버에 idToken을 보내서 accessToken, refreshToken을 발급 받고 사용할 수 있다
서버 관련된 내용은 팀 백엔드와 소통해보세용..

후기

기존에 파이어베이스로 로그인을 하는 과정보다 코드 자체가 짧아진 기분이 들었다. 이제 다른 소셜 로그인 변경하고 refreshToken을 다루는 부분 또한 공부해볼 예정

profile
Flutter, Swift 모바일 개발자의 스타트업에서 살아남기

0개의 댓글