我使用Facebook SDK在我的应用程序中通过Facebook登录。基本上,我有一个登录屏幕,当用户单击“ Facebook”按钮时,它将进行整个身份验证例程(打开野生动物园并请求接受许可)。在接受对应用程序的访问后未登录用户时,它将转到另一个视图(应用程序的主屏幕)。
问题是当用户已经登录时...我想在主屏幕中打开应用程序而没有显示登录视图。
我正在验证用户是否是viewDidAppear的LoginController中的记录器,并调用performSegueWithIdentifier方法,因为在viewDidLoad中它不起作用。
哪个是登录屏幕的最佳方法?
class LoginViewController: UIViewController{
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
}
override func viewDidAppear(animated: Bool) {
print("Will Appear method")
if (self.defaults.stringForKey("isLogged") != nil){
self.performSegueWithIdentifier("facebookLoginSegue", sender: nil)
}
}
//MARK - Actions
@IBAction func facebookLogin(sender: UIButton) {
FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email", "user_friends"], fromViewController:self, handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email")){
self.defaults.setBool(true, forKey: "isLogged")
self.getFBUserData()
}
}
})
}
func getFBUserData(){
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
print(result)
}
})
}
}
}
我考虑过在AppDelegate中验证用户“会话”并更改情节提要的rootViewController。这是一个好习惯还是一个疯狂的主意?
有人能帮我吗?
我找到了一个方法:
首先将主屏幕设置为情节提要中的根视图
第二步是验证用户是否已登录AppDelegate。如果未登录用户,请显示将根视图控制器更改为登录视图。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if (self.defaults.stringForKey("isLogged") == nil){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
最后,将登录视图中的segue添加到具有特定标识符的主视图中……当用户成功登录调用self.performSegueWithIdentifier(“ segueIdentifier”,发送者:nil)
if (self.defaults.stringForKey("isLogged") != nil){
self.performSegueWithIdentifier("facebookLoginSegue", sender: nil)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句