ios - FBSDKLoginManager() 以编程方式关闭 .web View

标签 ios swift facebook

我有一个 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/

相关文章:

ios - iOS 上的 Facebook 登录会打开错误的应用程序

ios - 如何以编程方式获取应用组名称?

ios - 如何快速访问底 View

ios - 在iOS上还原Microsoft Band连接

swift - Scrollview 滚动不适用于隐藏键盘?

ios swift - 返回到隐藏导航栏的屏幕时,导航项背景变黑

ios - 如何实现与另一个类同名的协议(protocol)

ios - 在 SKPaymentTransaction (Swift 3) 中从交易中抛出错误

javascript - 我可以让 AngularJS 为 Facebook OpenGraph 抓取工具使用不同的 Controller 吗?

android - 为什么我在注册 Facebook 应用程序时会得到不同的 key 哈希值?