繁体   English   中英

使用 facebook iOS SDK 4.9.1 登录 Swift

[英]Facebook Login for Swift with facebook iOS SDK 4.9.1

我在使用 swift 集成 facebook 登录时遇到了 facebook iOS SDK 4.9.1 的问题。 主要问题是无法快速找到有关它的任何指南。

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 和 Facebook SDK

我尝试在下面实现,但它根本不起作用。

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.
    }

}

这是视图控制器:

导入 FBSDKLoginKit

类 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")
}

}

在 App Delegate 中,将以下方法重写为:

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 将以下方法重写为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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