首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在初始登录后将用户持久化到Backendless

在初始登录后将用户持久化到Backendless
EN

Stack Overflow用户
提问于 2016-04-09 01:07:13
回答 1查看 310关注 0票数 0

我试图使它,以便用户可以保持登录,即使应用程序关闭。我似乎无法使我的功能正常工作。我有一个登录用户的函数,它在按下按钮时工作,但我似乎无法在用户第一次登录,然后关闭应用程序但不注销之后,才能在正确的位置调用函数来加载它。以下是我的视图控制器代码:

ViewControler

代码语言:javascript
运行
复制
import UIKit
import FBSDKCoreKit
import FBSDKLoginKit

class ViewController: UIViewController {


let APP_ID = "i have it"
let SECRET_KEY = "i have it"
let VERSION_NUM = "v1"

var backendless = Backendless.sharedInstance()




@IBOutlet weak var userEmail: UITextField!


@IBOutlet weak var password: UITextField!


func displayAlert(title: String, message: String) {

    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction((UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in

        self.dismissViewControllerAnimated(true, completion: nil)

    })))

    self.presentViewController(alert, animated: true, completion: nil)


}







@IBAction func signUp(sender: AnyObject) {

    let user = BackendlessUser()
    user.email = self.userEmail.text
    user.password = self.password.text


    if userEmail.text == "" || password.text == ""{

        displayAlert("Error in form", message: "Please enter a email adress and password")

    } else{

    backendless.userService.registering(user,
                                        response: { (registeredUser : BackendlessUser!) -> () in
                                            print("User has been registered (ASYNC): \(registeredUser)")
        },
                                        error: { ( fault : Fault!) -> () in
                                            print("Server reported an error: \(fault)")
        } 
    )
    }

}




@IBAction func logIn(sender: AnyObject) {


    if userEmail.text == "" || password.text == ""{

        displayAlert("Error in form", message: "Please enter a email adress and password")

    }else{





 loginUserAsync()


        let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate

        var initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("myTabbarControllerID") as! UIViewController
        appDelegate.window?.rootViewController = initialViewController
        appDelegate.window?.makeKeyAndVisible()



    }
}


func loginUserAsync() {

    let user = BackendlessUser()
    user.email = self.userEmail.text
    user.password = self.password.text

    backendless.userService.login(

        self.userEmail.text, password:self.password.text,

        response: { ( user : BackendlessUser!) -> () in

            self.backendless.userService.setPersistentUser()

            self.backendless.userService.setStayLoggedIn( true )

            self.backendless.userService.getPersistentUser()

            let user = self.backendless.userService.currentUser

            if (user != nil) {

                // get user's email (i.e. mandatory/predefined property)

                let userEmail = user.email
                let password = user.password



                let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate

                var initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("myTabbarControllerID") as! UIViewController
                appDelegate.window?.rootViewController = initialViewController
                appDelegate.window?.makeKeyAndVisible()
            }

            else if (user == nil) {

                print("User hasn't been logged")

            }

        },

        error: { ( fault : Fault!) -> () in

            print("Server reported an error: \(fault)")

        }

    )

}

func validUserTokenAsync() {
    backendless.userService.isValidUserToken(
        { (var result : AnyObject!) -> () in
            print("isValidUserToken (ASYNC): \(result.boolValue)")
        },
        error: { (var fault : Fault!) -> () in
            print("Server reported an error (ASYNC): \(fault)")
        } 
    ) 
}


override func viewDidLoad() {
    super.viewDidLoad()



    let loginButton = FBSDKLoginButton()
    loginButton.center = self.view.center
    self.view.addSubview(loginButton)



}


override func viewDidAppear(animated: Bool) {
    loginUserAsync()
}


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









}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-09 15:41:47

请确保调用以下函数:

代码语言:javascript
运行
复制
self.backendless.userService.setStayLoggedIn( true )

在"backendless.userService.login“之前,而不是在登录响应处理程序中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36511598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档