2016-09-27 5 views
0

Ich habe eine FBSDK-Anmeldung Webview, ich kann es mit den Tasten mit der App entlassen und soziale Freigabe Aufgabe abzuschließen.FBSDKLoginManager() Ablehnen. Web-Ansicht programmgesteuert

Ich versuche eine App Wide-Funktion zu implementieren, die es entfernen wird, wenn keine Berührungen nach drei Minuten erkannt werden, wenn zurück zum Home View-Controller die FB-Login-Ansicht wieder sichtbar ist.

Wie programmiere ich es programmgesteuert ohne Benutzerinteraktion.

var loginView:FBSDKLoginManager = FBSDKLoginManager() 

loginView.loginBehavior = FBSDKLoginBehavior.web 

loginView.logIn(withPublishPermissions: ["publish_actions"]){ (loginResult: FBSDKLoginManagerLoginResult?, error: Error?) in 

    if error != nil 
        ... 

Wie kann ich die FBSDKLoginBehavior.web programmatisch entlassen, wenn kein Benutzer ist diesen Anmeldevorgang abzubrechen.

+1

Seine automatisch nach der erfolgreichen entlassen Abschlussblock. –

+0

@KiritModi Ich bekomme das und es funktioniert für mich, aber sagen, wenn der Benutzer sich nicht anmeldet. Wie kann ich es ohne Benutzereingaben zu entlassen. Think Kiosk App und Benutzer gehen weg, ohne sich anzumelden, aber die Login-Ansicht ist immer noch sichtbar. – Magrafear

+0

In WebView ist die Schaltfläche Abbrechen bereits vorhanden. Oder Sie fügen Gesten in Webview hinzu, so dass der Benutzer auf das Textfeld außerhalb des Textfelds oder der Schaltfläche tippen kann. Entferne dann das Webview. –

Antwort

1

Ich kann nicht finden, wie man modale Fensterreferenz erhält. Aber können Sie FBSDKLoginBehavior.browser verwenden und sie abzuweisen:

In diesem Beispiel Facebook-Login-Ansicht wird nach 10 sec entlassen:

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) 
} 
}