首页 > 解决方案 > 取消 facebook 身份验证时,一个(swift)项目崩溃

问题描述

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

任何人都可以帮助我吗?

标签: swiftfirebasefirebase-realtime-database

解决方案


好的,这个函数的整个实现是错误的,因为无论用户是否经过身份验证,它都在获取用户。这是我写的新方法:

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

推荐阅读