Обрабатывать, если пользователь отменяет Facebook-Войти в Swift 5 - PullRequest
0 голосов
/ 16 марта 2020

У меня есть приложение, в котором пользователь может войти через Facebook.

Все работает нормально, но у меня проблема, когда пользователь отменяет процесс входа в систему. Есть два разных сценария ios, с которыми мне хотелось бы справиться, но я понятия не имею, как:

1.

enter image description here

2.

enter image description here

Я не мог Я не могу найти здесь ничего такого, поэтому я надеюсь, что кто-то может мне помочь.

Это мой handleFBLogin -метод, который вызывается, когда пользователь нажимает на button:

//MARK: Facebook Login
@objc func handleFBLogin(){

    // disable button tap
    self.facebookButton.isEnabled = false
    // hide the buttons title
    self.facebookButton.setTitle("", for: .normal)
    // start loading animation
    setupLoadingAnimation()
    logoAnimation.play()

    let accessToken = AccessToken.current

    LoginManager().logIn(permissions: ["email", "public_profile"], from: self) { (result, error) in
        if error != nil {
            // stop loading animation
            self.logoAnimation.stop()
            // remove animation from view
            self.logoAnimation.removeFromSuperview()
            // reset button title to "Registrieren"
            self.facebookButton.setTitle("Mit Facebook fortfahren", for: .normal)
            // play shake animation
            self.facebookButton.shake()
            // enable button tap
            self.facebookButton.isEnabled = true
            // some FB error
            Utilities.showErrorPopUp(labelContent: "Fehler beim Facebook-Login", description: error!.localizedDescription)
            return
        }
        // successfull FB-Login
        GraphRequest(graphPath: "/me", parameters: ["fields": "id, email, name"]).start { (connection, result, error) in
            if error != nil {
                // stop loading animation
                self.logoAnimation.stop()
                // remove animation from view
                self.logoAnimation.removeFromSuperview()
                // reset button title to "Registrieren"
                self.facebookButton.setTitle("Mit Facebook fortfahren", for: .normal)
                // play shake animation
                self.facebookButton.shake()
                // enable button tap
                self.facebookButton.isEnabled = true
                // some FB error
                Utilities.showErrorPopUp(labelContent: "Fehler beim Facebook-Login", description: error!.localizedDescription)
            }else {
                print(result!)
                // check if user has account
                guard let Info = result as? [String: Any] else { return }

                let email = Info["email"] as? String

                Auth.auth().fetchSignInMethods(forEmail: email!) { (methods, error) in

                    if error != nil {
                         // stop loading animation
                       self.logoAnimation.stop()
                       // remove animation from view
                       self.logoAnimation.removeFromSuperview()
                       // reset button title to "Registrieren"
                       self.facebookButton.setTitle("Mit Facebook fortfahren", for: .normal)
                       // play shake animation
                       self.facebookButton.shake()
                       // enable button tap
                       self.facebookButton.isEnabled = true
                        // show error popUp
                        Utilities.showErrorPopUp(labelContent: "Fehler", description: error!.localizedDescription)
                    } else {
                        // no error -> check email adress

                        // Email ist noch nicht registriert -> sign up
                        if methods == nil {

                            let usernameVC = self.storyboard?.instantiateViewController(withIdentifier: "UsernameVC") as! UserNameVC
                            usernameVC.accessToken = accessToken
                            self.navigationController?.pushViewController(usernameVC, animated: true)

                        }
                        // Email ist registriert -> login
                        else {

                            // set user status to logged-in
                            UserDefaults.standard.setIsLoggedIn(value: true)
                            UserDefaults.standard.synchronize()

                            // stop animation
                            self.logoAnimation.stop()

                            // transition to Home-ViewController
                            self.transitionToHome()

                        }
                    }
                }
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Вам нужно обработать 3 случая

 if error != nil {
      print("Facebook login failed. Error \(error)")
 } else if result?.isCancelled == true { 
     print("Facebook login was cancelled.")
 } else { 
   // clicked ok go on 
 }
0 голосов
/ 17 марта 2020
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
    if ((error) != nil) {
        // Process error
    }
    else if result.isCancelled {
        // Handle cancellations
    }
    else {
        // Navigate to other view
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...