Swift, Facebook SDK - Нажатие на кнопку отмены возвращает продолжить при входе в систему

Я реализую Facebook SDK в своем проекте программно. Я использую свою пользовательскую кнопку для регистрации и входа в систему, как показано ниже, и каждый раз, когда появляется диалоговое окно UIAlert, и я нажимаю кнопку отмены, он продолжает входить в систему.

[AppDelegate]

import UIKit
import Firebase
import FBSDKCoreKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()

        FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

        return true
    }

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

        let handled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])

        return handled

    }


}

[ViewController]

import UIKit
import Firebase
import FBSDKLoginKit

class TestController: UIViewController {

    @objc fileprivate func handleLogin() {
        let fbLoginManager = FBSDKLoginManager()
        fbLoginManager.logIn(withReadPermissions: ["public_profile", "email"], from: self) { (result, error) in

            if let error = error {
                print("Failed to login: \(error.localizedDescription)")
                return
            }

            guard let accessToken = FBSDKAccessToken.current() else { return }
            let credential = FacebookAuthProvider.credential(withAccessToken: accessToken.tokenString)

            Auth.auth().signInAndRetrieveData(with: credential, completion: { (user, error) in

                if let error = error {
                    //let castedError = error as NSError
                    let alertController = UIAlertController(title: "Login error", message: error.localizedDescription, preferredStyle: .alert)
                    let okayAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
                    alertController.addAction(okayAction)
                    self.present(alertController, animated: true, completion: nil)
                    return
                }

                print("Successfully authenticated.")

            })

        }
    }

    let loginButton: UIButton = {
        let button = UIButton()
        button.backgroundColor = .gray
        button.layer.cornerRadius = 5
        button.setTitle("Facebook login", for: .normal)
        button.addTarget(self, action: #selector(handleLogin), for: .touchUpInside)
        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(loginButton)
        loginButton.translatesAutoresizingMaskIntoConstraints = false
        loginButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        loginButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    }

}

Я попытался найти проблему, но я не знаю, почему кнопка отмены работает как кнопка продолжения. Может кто-нибудь сказать, в чем проблема? Спасибо.

0 ответов

Другие вопросы по тегам