解析 iOS SDK:如何持久登录?
Posted
技术标签:
【中文标题】解析 iOS SDK:如何持久登录?【英文标题】:Parse iOS SDK: How to persist login? 【发布时间】:2014-06-13 19:36:50 【问题描述】:Senario = 我有一个带有根视图控制器的应用程序,如果 [PFUser currentUser] 为 false(使用 PFLoginViewController - 以编程方式呈现),它会立即显示登录屏幕。如果有 currentUser,应用程序将执行到应用程序的“主”页面的 segue。如果用户成功登录,“主”页面会显示来自 Facebook 或 Twitter 的用户信息(取决于登录选项)。这两种登录类型仅限 Facebook 和 Twitter。
if (![PFUser currentUser])
// Create the log in view controller
PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init];
[logInViewController setDelegate:self];
[logInViewController setFields:PFLogInFieldsFacebook | PFLogInFieldsTwitter];
logInViewController.facebookPermissions = @[@"public_profile, user_friends, email, publish_stream"];
logInViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"light"]];
[logInViewController.logInView setLogo:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo_iphone.png"]]];
[logInViewController.logInView.logo setAutoresizingMask:UIViewAutoresizingNone];
// Present the log in view controller
[self presentViewController:logInViewController animated:YES completion:NULL];
else
[self performSegueWithIdentifier:@"main" sender:self];
问题 = 当我构建并运行我的应用程序或退出应用程序并重新打开它时,它所做的第一件事就是转到“主”页面(意味着它检测到一个 currentUser)。但是用户信息没有显示在“主”页面中(它不会持续从 Facebook 登录 - 我认为是 Facebook 访问令牌)。
问题 = 我如何从 Parse AND Facebook 或 Twitter 保留登录用户?
谢谢大家!
【问题讨论】:
【参考方案1】:我之前遇到过类似的问题,在登录 Facebook 并获得有效的 PFUser 后,退出并重新打开应用程序会导致 PFUser 失去其大部分属性。
原因是我在添加这些属性后在 PFUser 上使用了 saveEventually。不幸的是, saveEventually 不会像您期望的那样在本地保存数据。我不确定这是错误还是功能,但您可以使用任何其他保存方法,例如 saveInBackground,并且所有 PFUser 属性最终都应该保留到下一次应用启动。
【讨论】:
我也想通了。不知道你在你的情况下遇到了什么问题,但在我的情况下,问题是几件事。第一个解析已经持续登录,所以这不是问题,但我一直担心认为它是。第二,我使用了错误的 if 语句来检查 Facebook 和我的用户之间的链接。我没有在 if 语句中使用正确的条件。我应该说“if ([PFFacebookUtils isLinkedWithUser:[[PFUser] currentUser])”,如果您使用 Twitter,那么 Twitter 也是如此。完美运行。以上是关于解析 iOS SDK:如何持久登录?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 iOS Facebook SDK 2.4 保持登录状态
如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)
如何使用 iOS SDK 从 ASMX Web 服务中获取和解析 JSON?