Ich benutze;facebook swift sdk 0.2.0 swift 3.1 Login-Seite bleibt geöffnet
- swift sdk 0.2.0 und
- swift 3,1
Also auf meinem viewcontroller
(initial.swift
) Ich habe
import UIKit
import FacebookCore
import FacebookLogin
...
override func viewDidLoad() {
if let accessToken = AccessToken.current {
print("User is already logged in")
...
}
else {
let loginButton = LoginButton(readPermissions: [ .publicProfile, .email ])
loginButton.center = view.center
//AFTER ACTION
let loginManager = LoginManager()
loginManager.logIn([ .publicProfile, .email ], viewController: self)
{ loginResult in
switch loginResult {
case .failed(let error):
print(error)
break
case .cancelled:
print("User cancelled login.")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("Logged in!")
}
}
}
Login-Button zeigt sich wie erwartet, aber nach Genehmigung Seite, weiße Seite bleibt offen, wenn ich manuell auf "fertig" klicke, denkt App, dass der Benutzer die Anmeldung abgebrochen hat.
Es gibt ähnliche Themen vorschlagen fehlende app delegate
Funktionen (34734885), aber ich denke, es ist eine Lösung für FBSDKCoreKit
und FBSDKLoginKit
, nicht für neue facebook swift sdk. Nochmal, schätze ich. Irgendein Vorschlag?
BEARBEITEN
Ich habe auch dieses eine versucht;
let myLoginButton = UIButton()
myLoginButton.backgroundColor = UIColor.darkGray
myLoginButton.frame = CGRect(0, 0, 180, 40);
myLoginButton.center = view.center;
myLoginButton.setTitle("My Login Button", for: UIControlState.normal)
// Add the button to the view
view.addSubview(myLoginButton)
// Handle clicks on the button
myLoginButton.addTarget(self, action: #selector(self.FBloginButtonClicked), for: UIControlEvents.touchUpInside)
@objc func FBloginButtonClicked() {
//AFTER ACTION
let loginManager = LoginManager()
loginManager.logIn([ .publicProfile, .email ], viewController: self)
{ loginResult in
switch loginResult {
case .failed(let error):
print(error)
break
case .cancelled:
print("User cancelled login.")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("Logged in!")
}
}
}
Haben Sie eine Methode geschrieben, um in AppDelegate zu Ihrer Anwendung zurückzukehren? –