在我的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)
登录后,页面停留在此白屏,而不是返回到应用程序。因此,我继续按“完成”以手动返回到应用程序,并且控制台打印出没有错误,并继续进行到提要。现在,下一个有趣的部分是尽管登录时没有错误,但我仍未登录。你知道这是怎么回事吗?我错过了一步吗?
我在我的应用中使用了Google+和Facebook.我的问题是它们都需要appDelegate中的OpenURL方法.
对于Facebook登录:
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)
对于Google+登录信息:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
return GPPURLHandler.handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
}
Run Code Online (Sandbox Code Playgroud)
如何在同一个应用程序中同时使用google +和facebook?