首页 文章

使用Google凭据的Swift Firebase getIDToken()崩溃[已关闭]

提问于
浏览
2

我在尝试使用Google凭据检索Firebase idToken时遇到问题 . 但它适用于电子邮件/通行证 .

Firebase设置

func configureSDK(){
    FirebaseApp.configure()

    GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
    GIDSignIn.sharedInstance().delegate = self
 }

谷歌代表

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

    if let error = error {
        //error handling...

        return
    }

    guard let authentication = user.authentication else {

        //error handling
        return
    }

    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                   accessToken: authentication.accessToken)

    Auth.auth().signIn(with: credential) { (user, error) in
        self.handleAuthAnswer(user: user, error: error)
    }
}

登录处理

func handleAuthAnswer(user: User?, error: Error?){
    //error handling...
    //unwrapping User object
    //attempting to get token
    user.getIDToken(){ (idToken, error) in
        if error == nil, let token = idToken {
            self.idToken = token
        }else{
            //error handling
        }

    }
}

根据Firebase SDK指南,我得到的用户对象不是nil,这意味着用户已登录 . 我在Firebase控制台中看到该用户 . 问题是,当我试图获得idToken时,应用程序崩溃了 . 无论我是在尝试注册,还是在下次启动后从Auth.auth() . currentUser获取令牌 .

电子邮件/通过注册并使用相同的方法登录以获取ID令牌,它可以正常工作,没有错误或崩溃

例外截图:
Trace

Thread

编辑: beans 荚

Using Firebase (4.13.0)
Using FirebaseAnalytics (4.2.0)
Using FirebaseAuth (4.6.1)
Using FirebaseCore (4.0.20)
Using FirebaseInstanceID (2.0.10)
Using GTMOAuth2 (1.1.6)
Using GTMSessionFetcher (1.1.15)
Using GoogleSignIn (4.1.2)
Using GoogleToolboxForMac (2.1.3)
Using nanopb (0.3.8)

SOLVED: Firebase pod was downgraded to 4.11.0. Works fine

Installing Firebase 4.11.0 (was 4.13.0)
Installing FirebaseAnalytics 4.1.0 (was 4.2.0)
Installing FirebaseAuth 4.5.0 (was 4.6.1)
Installing FirebaseCore 4.0.18 (was 4.0.20)
Using FirebaseInstanceID (2.0.10)
Using GTMOAuth2 (1.1.6)
Using GTMSessionFetcher (1.1.15)
Using GoogleSignIn (4.1.2)
Using GoogleToolboxForMac (2.1.3)
Using nanopb (0.3.8)

1 回答

  • 2

    请检查您正在使用的库版本 . 每当函数,凭据或API创建任何错误时,请始终检查您使用的版本 .

相关问题