почему IOS13 не работает логин с фейсбука? - PullRequest
0 голосов
/ 06 января 2020

Я нажимаю кнопку Facebook, но она не отвечает на iOS 13, а на iOS 12.x работает нормально. Что мне делать?

Я использую:
1) модуль 'FBSDKCoreKit', '~> 5.13.1'
2) модуль 'FBSDKLoginKit', '~> 5.13.1'
3) модуль «FacebookCore»
4) модуль «FacebookLogin»
5) модуль «FacebookShare»

Ответы [ 2 ]

3 голосов
/ 06 января 2020

Ваш appdelegate в методе открытого URL-адреса не работает, потому что ios13 изменяется

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
  return 
}    

Вы должны установить в работе последний xcode, чем файл SceneDelegate.swift, чтобы добавить этот метод. пожалуйста попробуйте.

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
      guard let url = URLContexts.first?.url else {
          return
      }
      let _ = ApplicationDelegate.shared.application(
          UIApplication.shared,
          open: url,
          sourceApplication: nil,
          annotation: [UIApplication.OpenURLOptionsKey.annotation])
  }

и не забыли импортировать FBSDKLoginKit в SceneDelegate

0 голосов
/ 06 января 2020

набор типов URL info.plist enter image description here

//create a function for present root view controller in AppDelegate create var window: UIWindow? 

var appDelegateShared: AppDelegate {
    return UIApplication.shared.delegate as? AppDelegate ?? AppDelegate()
}

create a class for Facebook login
    class WFacebookManager: NSObject {
        typealias FBCallback = (Bool, Any?) -> Void
        var handler: FBCallback?
        static let shared: WFacebookManager = WFacebookManager()
        public func loginWithFacebook(completion: @escaping FBCallback ) {
            handler = completion
            let fbLoginManager: LoginManager = LoginManager()
            fbLoginManager.logOut()
            let presentView = appDelegateShared.window?.rootViewController!
            fbLoginManager.logIn(permissions: ["public_profile", "email"], from: presentView) { (result, error) -> Void in
                if error == nil {
                    if (result?.isCancelled)! {
                        self.handler?(false, nil)
                        return
                    } else if AccessToken.current != nil {
                        let values = "id, name, first_name, last_name, picture.type(large), email"
                        let request = GraphRequest(graphPath: "me", parameters: ["fields": values])
                        request.start(completionHandler: { (_, result, error) in
                            self.handler?(error == nil, result)
                        })
                    }
                } else {
                    self.handler?(false, nil)
                }
            }
        }
    }
    // on your action call function then get login data
    @IBAction func loginWithFacebook(_ sender: Any) {
            WFacebookManager.shared.loginWithFacebook { (success, data) in
                if let data = data as? [String: Any], success {
                    print (data)
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...