Closed Ahario closed 7 months ago
PR 날릴 때 체크 리스트
어떤 종류의 PR인가요?
Issue Number: N/A
구글 로그인 기능을 만들었습니다. 구글의 로그인 sdk를 이용하여 뷰 -> 구글 로그인 페이지를 연결하였고, 받아온 정보를 파이어베이스 로직을 이용해서 데이터베이스에 저장하는식으로 구현하였습니다.
GIDSignIn.sharedInstance.signIn(withPresenting: check) { signResult, error in if let error = error { print("구글 로그인 에러입니다\(error)") return } else { guard let user = signResult?.user, let idToken = user.idToken else { return } let accessToken = user.accessToken let credential = GoogleAuthProvider.credential(withIDToken: idToken.tokenString, accessToken: accessToken.tokenString) Task { if let alertTitle = await self.viewModel.loginWithGoogle(credential: credential) { print(alertTitle) return } else { presentationMode.wrappedValue.dismiss() } } } }
func loginWithGoogle(credential: AuthCredential) async -> String? { do { let result = try await Auth.auth().signIn(with: credential) let newUserCheck = await checkUser(userID: result.user.uid) if newUserCheck { let data = [ "id" : result.user.uid, "name": result.user.displayName, "email": result.user.email, "profilePicture": "" ] COLLECTION_USERS.document(result.user.uid).setData(data) { _ in self.userSession = result.user self.fetchUser() } print("계정생성 성공") } else { self.userSession = result.user self.fetchUser() } return nil } catch { return ("구글 로그인 실패") } }
func checkUser(userID: String) async -> Bool { do { let querySnapshot = try await Firestore.firestore().collection("users") .whereField("id", isEqualTo: userID).getDocuments() if querySnapshot.isEmpty { return true } else { return false } } catch { return true } }
스크린샷
메일이 포함되있는 화면이라 스크린샷은 저희 디코방에 올리겠습니다.
구글메일을 새로 만들거나, 기존에 등록된 구글메일을 파이어베이스에서 삭제를 해야 신규유저테스트를 할수있는데, 시간이 너무 많이 걸립니다. 가능하시면 한번씩 테스트해보시고 문제가 있으면 알려주세요.
혹시 모르니까 테스트할때 진짜 개인정보가 담긴 구글계정으로는 확인하지마시고 더미 계정을 하나 만들어서 테스트해주세요.
구글로그인 페키지를 추가하였습니다
아 현재는 디자인정책에 맞는 스타일로 버튼모양이 되어있습니다. 테스트해보고 문제가 없으면 디자인을 저희 디자인 스타일로 변경하겠습니다.
PR 가이드라인
PR Checklist
PR 날릴 때 체크 리스트
PR Type
어떤 종류의 PR인가요?
연관되는 issue 정보를 알려주세요
Issue Number: N/A
PR 설명하기
구글 로그인 기능을 만들었습니다. 구글의 로그인 sdk를 이용하여 뷰 -> 구글 로그인 페이지를 연결하였고, 받아온 정보를 파이어베이스 로직을 이용해서 데이터베이스에 저장하는식으로 구현하였습니다.
어떻게 작동하나요? code 기반으로 설명해주세요
구글로그인 SDK를 이용해서 미리 지정한 URLSCHEME을 통해 구글 로그인페이지로 이동합니다. 로그인 성공시 받은 토큰을 이용하여 credential를 받습니다.
받은 credential을 이용하여 파이어베이스 로그인 함수를 이용하여 로그인을 합니다
만약 신규유저일지 데이터베이스에 추가해줍니다
스크린샷
메일이 포함되있는 화면이라 스크린샷은 저희 디코방에 올리겠습니다.
기타 언급해야 할 사항들
구글메일을 새로 만들거나, 기존에 등록된 구글메일을 파이어베이스에서 삭제를 해야 신규유저테스트를 할수있는데, 시간이 너무 많이 걸립니다. 가능하시면 한번씩 테스트해보시고 문제가 있으면 알려주세요.
혹시 모르니까 테스트할때 진짜 개인정보가 담긴 구글계정으로는 확인하지마시고 더미 계정을 하나 만들어서 테스트해주세요.
구글로그인 페키지를 추가하였습니다