尝试使用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令牌,它可以正常运行
编辑: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)
答案 0 :(得分:2)
请检查您正在使用的库版本。每当函数,凭据或API创建任何错误时,请始终检查您正在使用的版本。