Swift Facebook Login

后端 未结 4 1211
北恋
北恋 2021-02-04 18:07

I\'m trying to convert the following code lines from Objective C to the new programming language Swift. Maybe someone can help me and outline the differences. Would be awesome!<

4条回答
  •  旧巷少年郎
    2021-02-04 18:39

    Here is my answer: Few keywords like FBSessionStateCreatedTokenLoaded thrown error for me.. So This might helps

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
      // Whenever a person opens the app, check for a cached session
        if FBSession.activeSession().state == FBSessionState.CreatedTokenLoaded
        {
    
             // If there's one, just open the session silently, without showing the user the login UI
            FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: false, completionHandler: {
                (session, state, error) -> Void in
                 self.sessionStateChanged(session, state: state, error: error)
            })
        }
    
     return true
    }
     func sessionStateChanged(session : FBSession, state : FBSessionState, error : NSError?)
    {
        // If the session was opened successfully
        if  state == FBSessionState.Open
        {
            println("Session Opened")
        }
        // If the session closed
        if state == FBSessionState.Closed
        {
            println("Closed")
        }
    }
    

    On Button click do Facebook login

     @IBAction func FacebookLoginPressed(Sender: AnyObject)
    {
       if (FBSession.activeSession().state == FBSessionState.Open || FBSession.activeSession().state == FBSessionState.OpenTokenExtended)
        {
            // Close the session and remove the access token from the cache
            // The session state handler (in the app delegate) will be called automatically
            FBSession.activeSession().closeAndClearTokenInformation()
        }
        else
        {
            // Open a session showing the user the login UI
            // You must ALWAYS ask for public_profile permissions when opening a session
            FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: true, completionHandler: {
                (session:FBSession!, state:FBSessionState, error:NSError!) in
    
                let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
                 // Call the app delegate's sessionStateChanged:state:error method to handle session state changes
                appDelegate.sessionStateChanged(session, state: state, error: error)
            })
        }
    
    }
    

提交回复
热议问题