更新GoogleSignIn后报错:GIDSignInResult无authentication成员
解决GoogleSignIn更新后
GIDSignInResult无authentication成员的问题 问题原因
GoogleSignIn 6.0及以上版本重构了API,原GIDSignInResult的authentication属性被移除,相关认证信息需从GIDSignInResult包含的GIDGoogleUser实例中直接获取。
修复后的代码
func googleSignInAction(){ guard let clientID = FirebaseApp.app()?.options.clientID else { return } let config = GIDConfiguration(clientID: clientID) GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, error in if let error = error { print("There is an error signing the user in ==> \(error)") return } // 从返回结果中获取Google用户实例及认证令牌 guard let googleUser = signInResult?.user, let idToken = googleUser.idToken?.tokenString, let accessToken = googleUser.accessToken.tokenString else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken) Auth.auth().signIn(with: credential) { authResult, error in if error != nil { print(error) } else { self.email = authResult?.user.email self.photoURL = authResult?.user.photoURL?.absoluteString self.checkIfUserAccountExists() } } } }
关键修改说明
- 回调参数
user重命名为signInResult,避免与内部的Google用户实例混淆 - 通过
signInResult?.user获取GIDGoogleUser实例 - 从
googleUser.idToken?.tokenString提取ID Token字符串 - 从
googleUser.accessToken.tokenString提取Access Token字符串
内容的提问来源于stack exchange,提问作者Vandal
相关产品推荐
相关产品推荐

