我的应用程序上有正常的身份验证代码,代码在模拟器上运行正常。一旦在设备上进行测试,它甚至无法启动。以下是Facebook登录的片段,Twitter或电子邮件/通行证登录也是如此。
if let fbLoginResult : FBSDKLoginManagerLoginResult = result {
if (fbLoginResult.grantedPermissions.contains("email")){
print("Facebook Token received!")
FBSDKAccessToken.setCurrent(fbLoginResult.token)
let token = FBSDKAccessToken.current().tokenString!
let credential = FIRFacebookAuthProvider.credential(withAccessToken: token)
print("Token : \(token)")
FIRAuth.auth()?.currentUser?.link(with: credential, completion: { (currentUser, linkingError) in
if linkingError != nil {
print("Linking error: \(linkingError?.localizedDescription)")
FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in
if error == nil {
self.loginSucceeded(user: user!)
}else{
print("Error : \(error?.localizedDescription)")
}
})
}else{
self.loginSucceeded(user: currentUser!)
}
})
}
}
我尝试将构建设置上的Bitcode切换为NO
。仍然无法工作。
如何解决这个问题?非常感谢!
答案 0 :(得分:0)
by"甚至没有开始",这件作品不会开始?您是否设置了调试器以确定哪些代码行未执行?只需查看您提供的代码段,我的猜测就是:
FIRAuth.auth()?.currentUser?.link(with: credential, completion: { (currentUser, linkingError) in
对于之前未经过身份验证的设备,此行可能会失败,因为currentUser
将是nil
,我相信。我会确保这个变量是非零的,因为这可能导致这个问题。