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
}
}
Я попытался найти проблему, но я не знаю, почему кнопка отмены работает как кнопка продолжения. Может кто-нибудь сказать, в чем проблема? Спасибо.