如何在没有首先显示登录屏幕的情况下使用FB签名到主屏幕后正确转换?

时间:2016-11-28 07:04:14

标签: ios swift facebook

我使用我的应用程序使用FB创建了社交登录。在与FB签约后,它会转换回登录屏幕,然后转到我的应用程序的主屏幕。如何在登录FB后直接进入主屏幕,而不是在主屏幕之前首先登录屏幕。

显示连接到FB的代码:

    let parameters = ["fields":"id, email, first_name, last_name"]
    let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: parameters, HTTPMethod: "GET")
    graphRequest.startWithCompletionHandler({(connection, result, error) -> Void in

        if error != nil {
            print("Facebook Error: \(error.localizedDescription)")
            return
        }

        guard let id = result["id"] as? String else{
            print("Error: \(error.localizedDescription)")
            return
        }

        print("FacebookId connecting: \(id)")
        //connect to app server
        //passes user id and connects to back-end server
        self.connectToserver(id)
连接到fb到后端后的

功能:

private func connectToserver(id: String) {
        let endPoint: String = "*********"
        let params = ["id": id]

        let url:NSURL? = NSURL(string: endPoint)
        let session = NSURLSession.sharedSession()

        let request:NSMutableURLRequest = NSMutableURLRequest(URL: url!)

        request.HTTPMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")

        do {
            request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: .PrettyPrinted)
            print(params)
        }
        catch {
            print("Error: \(error)")
        }

        print("Facebook")

        let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in

            guard let data = data where error == nil else {
                print("Error connecting: \(error?.localizedDescription)")
                return
            }
            let httpResponse = response as! NSHTTPURLResponse//HTTPURLResponse
            let statusCode = httpResponse.statusCode

            if statusCode == 200 {
                do {
                    print("FaceBook post to server")
                    print("Response: \(response)")
                    // let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
                    let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
                    let result = json as? [String: AnyObject]
                    print("Result: \(result)")
                    guard let token = result!["token"] else {
                        print("Error: \(error?.debugDescription)")
                        return
                    }

                    NSUserDefaults.standardUserDefaults().setObject(token, forKey: "token")

                    //dispatch_async(dispatch_get_main_queue(), {
                        self.getHome()
                    //})

                }
                catch {
                    print("Error receiving data")
                }
            }

重定向到主屏幕:

private func getHome() {
        let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let tableController = storyboard.instantiateViewControllerWithIdentifier("tabController")

        let appledDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        //appledDelegate.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil)
        appledDelegate.window?.rootViewController = tableController        
    }

0 个答案:

没有答案
相关问题