取消facebook身份验证时,(快速)项目崩溃

时间:2018-05-30 19:55:57

标签: swift firebase firebase-realtime-database

我的项目使用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")
    }

请问有人可以帮助我吗?

1 个答案:

答案 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()
                }
            }
        }