Mic*_*nna 5 ios facebook-login swift fbsdk
在我的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)
Run Code Online (Sandbox Code Playgroud)
这是按钮的代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
登录后,页面停留在此白屏,而不是返回到应用程序。因此,我继续按“完成”以手动返回到应用程序,并且控制台打印出没有错误,并继续进行到提要。现在,下一个有趣的部分是尽管登录时没有错误,但我仍未登录。你知道这是怎么回事吗?我错过了一步吗?
如上所述,缺少应用程序委托,但在两个地方。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
Run Code Online (Sandbox Code Playgroud)
和
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
}
Run Code Online (Sandbox Code Playgroud)