我的项目使用Firebase和Facebook身份验证。它运行正常,但当我选择取消Facebook身份验证时(第一次获取uid)项目崩溃。 这是我使用的方法:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
Auth.auth().signInAndRetrieveData(with: credential) { (user, error) in
// [START_EXCLUDE]
if let error = error {
print(error.localizedDescription)
return
}
self.uid = Auth.auth().currentUser?.uid
self.firstFetch()
// [END_EXCLUDE]
}
print("logged in")
}
请问有人可以帮助我吗?
答案 0 :(得分:1)
好的,这个函数的整个实现是错误的,因为无论是否经过身份验证,它都会提取用户。这是我写的新方法:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result:
FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print("look a at your.. errm.. code, please", error.localizedDescription)
} else if result.isCancelled {
print("houston, we have a situation: the player cancelled the auth request")
} else {
let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
Auth.auth().signInAndRetrieveData(with: credential) { (user, error) in
self.uid = Auth.auth().currentUser?.uid
print("you're in, remember: with great power comes great responsibility!")
self.firstFetch()
}
}
}