문서: https://developers.google.com/identity/sign-in/ios/start-integrating
https://github.com/google/GoogleSignIn-iOS
OAuth 클라이언트 ID 만들기
를 이용하여 간단하게 프로젝트 및 클라이언트 ID를 생성할 수 있다.
+ Create a new project
를 눌러 새 프로젝트를 만듦과 동시에 선택할 수 있다.
Bundle ID는 프로젝트의 BundleID를 붙여넣으면 된다.
버튼을 누르면 credentials.plist
로 저장되며, 내부에 ClientID
값이 현재 사진에 보이는 동일한 값으로 저장되어있다(보안을 위해 가림).
또한 GCP - Project - 사용자 인증 정보
탭을 통해 Client ID 값을 확인할 수 있다.
Target(프로젝트명) -> Info -> URL Types 추가
ClientID값을 URL Schemes
에 넣되, dot(.)을 기준으로 반전시켜 작성한다.
// Client ID: 1234567890-abcdefg.apps.googleusercontent.com 라면
com.googleusercontent.apps.1234567890-abcdefg // 이렇게 적용시키면 된다.
구글 로그인 기능을 구현할 ViewController에서 구글 로그인 버튼의 Action 메서드 내부에 다음의 코드를 작성한다.
Note: GIDConfiguration에서 clientID값은 반전시키지 않고 넣어주어야 한다. 오로지 반전된 값은
URL Scheme
에서만!
let id = "1234567890-abcdefg.apps.googleusercontent.com" // 여기서는 반전시키지 말고 ID값 그대로 적용한다.
let signInConfig = GIDConfiguration(clientID: id)
GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in
guard error == nil else { return }
guard let user else { return }
let email = user.profile?.email
let name = user.profile?.name
// 1. do를 통해 가져오기
user.authentication.do { authentication, error in
guard let authentication = authentication else { return }
let idToken = authentication.idToken
let accessToken = authentication.accessToken
let refreshToken = authentication.refreshToken
let clientID = authentication.clientID
}
// 2. authentication에서 바로 가져오기
let idToken = user.authentication.idToken
let accessToken = user.authentication.accessToken
let refreshToken = user.authentication.refreshToken
let clientID = user.authentication.clientID
print(accessToken)
}
이러면, 구글로 로그인이 정상적으로 완료될 시 email, name, idToken, accessToken, refreshToken, clientID 등 여러 정보를 추출할 수 있게 된다.