如何制作登录流程IOS应用
Posted
技术标签:
【中文标题】如何制作登录流程IOS应用【英文标题】:How to make a login flow IOS app 【发布时间】:2015-10-30 02:02:08 【问题描述】:我使用 Facebook SDK 在我的应用程序中通过 Facebook 登录。基本上我有一个登录屏幕,当用户单击“Facebook”按钮时,它会执行整个身份验证程序(打开 safari 并要求接受许可)。当用户在接受对应用程序的访问后未登录时,它会转到另一个视图(应用程序的主屏幕)。
问题是当用户已经登录时......我想在主屏幕中打开应用程序而不显示登录视图。
我正在验证用户是否在 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。这是一个好的做法还是一个疯狂的想法?
有人可以帮我吗?
【问题讨论】:
我认为你需要把这个放在viewDidAppear:
使您的初始视图成为主视图,并在 viewDidLoad: 中注销使用时执行if
语句segue,这样当他们'重新登录。
嗨@FarhadNezhad,我找到了一种方法......感谢您的帮助。在 AppDelegate 中我验证用户是否未登录我更改我的 RootView。
@AlessandroGarcez 是的,这是另一种方式,我很高兴我能帮上一点忙,如果我这样做了:P
【参考方案1】:
我找到了办法:
首先将主屏幕设置为storyboard中的根视图
第二步是验证用户是否登录 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", sender: nil)
if (self.defaults.stringForKey("isLogged") != nil)
self.performSegueWithIdentifier("facebookLoginSegue", sender: nil)
【讨论】:
模糊的解决方案,没有连贯的解释。以上是关于如何制作登录流程IOS应用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS Objective-C 中集成“使用 Apple 登录”流程?
iOS 应用程序中的 Twitter 提要 - 我如何仅从我自己的帐户获取列表提要 [无需应用用户登录 Twitter]