Facebook登录 – 停留在白色网页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) } }
登录后,页面将保持此白色屏幕而不是返回应用程序。 所以我继续按“完成”手动返回到应用程序,我的控制台打印出没有错误,然后继续转到源。 现在,有趣的下一部分是我没有登录,尽管登录时没有错误。 你知道这里发生了什么吗? 我错过了一步吗?
如上所述,缺少应用代表,但在两个地方。
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) }
AppDelegate丢失了:
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。 然后,当我关闭应用程序(返回主屏幕)并再次进入应用程序时,它会显示一个空白屏幕。 我通过这些来解决它:
在app委托中:
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 #import #endif /* Bridging_Header_h */