0
私は、ユーザーがアプリケーションが終了してもログインできるようにしようとしています。私の機能が正しく働くようには思えません。私は、ユーザーを記録する機能があり、ボタンが押されたときに機能しますが、ユーザーが最初にログインして閉じた後にしかロードされないように関数を呼び出すことはできませんアプリはログアウトしません。Backendlessへの最初のログイン後にユーザーを維持する
self.backendless.userService.setStayLoggedIn(true)
"backendless.userService.login" の前ではなく、ログイン応答ハンドラで:
ViewControler
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.
}
}
ユーザーのデフォルト値にトークンまたはブール値を格納できます。その人がアプリに戻ったときに、保存された値があるかどうかを確認し、ログインプロセスをバイパスします。それはあなたのために働くだろうか? – ryantxr
私はそれを行う方法がわかりません。私はバックエンドレスの新機能です。コード例を教えてもらえますか? –
私の以前のソリューションは突然すべて動作しなくなりました。 –