Facebook 登录 - 停留在白色网页 SWIFT

Facebook login - stays at white web page SWIFT

在我的 LoginViewController 中,我实现了 FBSDKLoginButtonDelegate 并导入了 FBSDKLoginKit 和 FBSDKCoreKit。我在 viewDidLoad 中的代码如下所示:

    //setting up facebook login button
    var facebookLogin = FBSDKLoginButton()
    //want this button to conform to this protocol
    facebookLogin.delegate = self
    facebookLogin.readPermissions = ["public_profile", "email",   "user_friends"]
    facebookLogin.frame = CGRectMake(20, 359, 335, 30)
    self.view.addSubview(facebookLogin)

这是按钮的代码:

    public func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult 
         result: FBSDKLoginManagerLoginResult!, error: NSError!) {

    if error != nil {
        print(error.localizedDescription)
        return
    } else {
      print("No error")
      self.performSegueWithIdentifier("loginToFeed", sender: self)
    }

}

登录后,页面停留在这个白屏,而不是回到应用程序。所以我继续并按 "Done" 手动返回到应用程序,我的控制台打印出没有错误,然后继续转到提要。现在有趣的下一部分是尽管登录时没有错误,但我没有登录。你知道这里发生了什么吗?我错过了一步吗?

缺少 AppDelegate:

func application(application: UIApplication,
             openURL url: NSURL,
             sourceApplication: String?,
             annotation: AnyObject?) -> Bool {
  return FBSDKApplicationDelegate.sharedInstance().application(application,
                                                  openURL: url,
                                                  sourceApplication: sourceApplication,
                                                         annotation: annotation)
 }

如上所述,缺少应用程序委托,但在两个地方。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(application: UIApplication,
    openURL url: NSURL,
    sourceApplication: String?,
    annotation: AnyObject) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)
}

这是我的情况:我可以使用 myapp 登录 fb。然后,当我关闭应用程序(返回主屏幕)并再次进入该应用程序时,它会显示一个空白屏幕。我通过这些解决了它:

在应用委托中:

func applicationDidBecomeActive(application: UIApplication) {
    FBSDKAppEvents.activateApp()
}

此外,我正在使用本文中的桥接文件: http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/

桥接文件如下所示:

#ifndef Bridging_Header_h
#define Bridging_Header_h

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

#endif /* Bridging_Header_h */