class ViewController: UIViewController, FBSDKLoginButtonDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let loginButton = FBSDKLoginButton()
loginButton.center = self.view.center
self.view.addSubview(loginButton)
loginButton.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
if let error = error {
print(error.localizedDescription)
return
} else {
let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)
FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
if let error = error {
print(error.localizedDescription)
} else {
print("successfullyAuthenticated")
}
}
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
print("logged out")
}
}
// Log in to Facebook
let login = FBSDKLoginManager()
login.logInWithReadPermissions(["public_profile"], fromViewController: self, handler: { (result, error) in
if (error != nil || result.isCancelled) {
print(error)
} else {
// Log in to Firebase via Facebook
let credential = FIRFacebookAuthProvider.credentialWithAccessToken(result.token.tokenString)
FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
if (error != nil) {
print(error)
}
}
}
})
// Observe auth state change
self.auth.addAuthStateDidChangeListener { (auth, user) in
if (user != nil) {
let uid = user?.uid as String!
self.database.reference().child("users/\(uid)").setValue(["name": user?.displayName]) // as well as other info
}
}