Swift Firebase getIDToken()与Google凭据崩溃

时间:2018-04-14 11:22:31

标签: swift firebase firebase-authentication

尝试使用Google凭据检索Firebase idToken时遇到问题。但它适用于电子邮件/传递。

Firebase设置

func configureSDK(){
    FirebaseApp.configure()

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

Google代表

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

编辑:Pods

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)

已解决:Firebase pod已降级为4.11.0。工作正常

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 个答案:

答案 0 :(得分:2)

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