我有一个 FBSDK 登录 webview,我可以使用应用程序的按钮关闭它并完成社交分享任务。
我正在尝试实现一个应用程序范围的功能,如果在三分钟后没有检测到触摸,当弹出回到主视图 Controller 时,FB 登录 View 仍然可见,它将删除它。
如何在没有用户交互的情况下以编程方式关闭它。
var loginView:FBSDKLoginManager = FBSDKLoginManager()
loginView.loginBehavior = FBSDKLoginBehavior.web
loginView.logIn(withPublishPermissions: ["publish_actions"]){ (loginResult: FBSDKLoginManagerLoginResult?, error: Error?) in
if error != nil
...
如果没有用户取消此登录过程,我如何以编程方式关闭 FBSDKLoginBehavior.web。
最佳答案
我找不到如何获取模态窗口引用。但是,您可以使用 FBSDKLoginBehavior.browser 并关闭它:
在此示例中,Facebook 登录 View 将在 10 秒后关闭:
ViewController.swift
import UIKit
import FBSDKLoginKit
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
func loginButtonTouchUpInside(_ sender: AnyObject) {
loginManager.logIn(withReadPermissions: self.readPermissions, from: self) { (result, error) in
NSLog("login window dismissed")
}
DispatchQueue.global(qos: .utility).async {
sleep(10)
DispatchQueue.main.async {
if let presentedViewController = self.presentedViewController {
presentedViewController.dismiss(animated: true, completion: nil)
}
}
}
}
var loginManager = FBSDKLoginManager()
let readPermissions = ["public_profile", "email", "user_friends","user_birthday"]
override func viewDidLoad() {
loginManager.loginBehavior = FBSDKLoginBehavior.browser
let button = UIButton(frame: CGRect(x: 50, y: 50, width: 100, height: 20))
button.setTitleColor(UIColor.blue, for: .normal)
button.setTitle("Login", for: .normal)
button.addTarget(self, action: #selector(ViewController.loginButtonTouchUpInside(_:)), for: .touchUpInside)
view.addSubview(button)
}
}
关于ios - FBSDKLoginManager() 以编程方式关闭 .web View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39716624/