You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:05:11