Я пытаюсь разрешить пользователю вход через Facebook, Twitter и Google. Мое приложение старое и преобразовано из swift 3 в swift 5. Вход в Twitter работает правильно, но вход в Facebook и вход в Google не работают, приложение зависает, и экран без ошибок вот так https://youtu.be/oT4i8Es0cdI
Я попробовал один и тот же код с новым проектом, и он работает правильно , Что делает старые конвертированные приложения, не работает с тем же кодом.
Я использую Facebook SDK: 5.15.1 Xcode 13.3.1 Swift 5
Код в приложении делегата открыть URL :
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
print("App open url")
let googleDidHandle = GIDSignIn.sharedInstance().handle(url)
let twitterHandle = TWTRTwitter.sharedInstance().application(app, open: url, options: options)
let facebookDidHandle = ApplicationDelegate.shared.application(
app,
open: url,
options: options)
return twitterHandle || facebookDidHandle || googleDidHandle
}
**Code for login :**
@IBAction func loginWithFacebbok(_ sender: UIButton) {
add(loadingViewController)
let loginManager = FBSDKLoginKit.LoginManager()
loginManager.logIn(permissions: [ "email"], from: self) { (result, error) in
if error == nil{
print("get facebook data")
self.getFacebookData(accessToken: result?.token)
}else{
print("error is \(error)")
}
}
}
@IBAction func loginWithGmail(_ sender: UIButton) {
//GIDSignIn.sharedInstance()?.delegate = self
add(loadingViewController)
GIDSignIn.sharedInstance().signIn()
}
override func viewDidLoad() {
super.viewDidLoad()
GIDSignIn.sharedInstance()?.presentingViewController = self
}
in App delegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
GIDSignIn.sharedInstance().delegate = self
LanguageHelper.setSavedLanguage()
ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)
return true
}```