Swift Facebook Login

后端 未结 4 1206
北恋
北恋 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)
            })
        }
    
    }
    
    0 讨论(0)
  • 2021-02-04 18:44

    This is the code

    if FBSession.activeSession().state == FBSessionStateCreatedTokenLoaded
        {
            FBSession.openActiveSessionWithPublishPermissions("publish_actions", defaultAudience: FBSessionDefaultAudienceFriends, allowLoginUI: true, completionHandler: ^(session : FBSession, state : FBSessionState, error : NSError))
                {
                    // Handler for session state changes
                    // This method will be called EACH time the session state changes,
                    // also for intermediate states and NOT just when the session open
                    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 == FBSessionStateOpen
        {
            println("Session Opened")
        }
    }
    
    0 讨论(0)
  • func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
            if FBSession.activeSession.state.value == FBSessionStateCreatedTokenLoaded.value {
                FBSession.openActiveSessionWithReadPermissions(self.facebookReadPermissions, allowLoginUI: true, completionHandler: {(session, state, error) -> Void in
                        self.sessionStateChanged(session, state: state, error: error)
                    })
            }
    
    }    
    func sessionStateChanged(session:FBSession, state:FBSessionState, error:NSError?) {
    
    }
    
    0 讨论(0)
  • 2021-02-04 18:59

    This can be simplified to:

    let state = FBSession.activeSession().state
    
    if state == .Open && state == .OpenTokenExtended {
      FBSession.activeSession().closeAndClearTokenInformation()
    } else {
      FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: true) {
        _ in
        FBSession.activeSession().closeAndClearTokenInformation()
      }
    }
    
    0 讨论(0)
提交回复
热议问题