简体   繁体   中英

Facebook Login for Swift with facebook iOS SDK 4.9.1

I got trouble with facebook iOS SDK 4.9.1 on integrating facebook login using swift. and main trouble is unable to find any guideline regarding it for swift.

http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/

http://swiftdeveloperblog.com/facebook-sdk-ios-login-example-with-swift/

IOS Swift and Facebook SDK

I try to implement below but it doesn't work at all.

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        if (FBSDKAccessToken.currentAccessToken() != nil)
        {
            // User is already logged in, do work such as go to next view controller.
        }
        else
        {
            let loginView : FBSDKLoginButton = FBSDKLoginButton()
            self.view.addSubview(loginView)
            loginView.center = self.view.center
            loginView.readPermissions = ["public_profile", "email", "user_friends"]
            loginView.delegate = self
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

This is for viewcontroller :

import FBSDKLoginKit

class ViewController: UIViewController,FBSDKLoginButtonDelegate {

@IBOutlet weak var fbLoginView: FBSDKLoginButton!

override func viewDidLoad() {
    super.viewDidLoad()

    if(FBSDKAccessToken.currentAccessToken() == nil){
        print("Not Logged ")
    }
    else{
        print("Logged In")
    }
    fbLoginView.readPermissions = ["public_profile","email","user_birthday"]
    fbLoginView.delegate = self

    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
    if error == nil
    {
        print("login complete")
        let request = FBSDKGraphRequest(graphPath:"me", parameters:["fields":"name,gender,birthday,first_name,last_name,email"])
        request.startWithCompletionHandler
            {
                (connection, result, error) in
                if error != nil
                {
                    print ("error \(error)")
                }
                else if let userData = result as? NSDictionary
                {

                   var frstname = userData["first_name"] as? String
                   var lastname =  userData["last_name"] as? String
                   var gender = userData["gender"] as? String
                   var birthday = userData["birthday"] as? String
                   var email = userData["email"] as? String

                    print(result) 
                }
        }  
    }   
    else
    {
        print(error.localizedDescription)
    }

}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
   print("user logged out")
}

}

In App Delegate override the following method as :

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

Swift 5+ In App Delegate override the following method as :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM