PFLogInViewController 错误-使用 Parse 注销后无法登录 Facebook
Posted
技术标签:
【中文标题】PFLogInViewController 错误-使用 Parse 注销后无法登录 Facebook【英文标题】:PFLogInViewController error- unable to login to Facebook after logging out with Parse 【发布时间】:2015-01-05 23:14:29 【问题描述】:我正在使用 PFLogInViewController 登录到第一次成功运行的 facebook-
- (void)logInViewController:(PFLogInViewController *)controller
didLogInUser:(PFUser *)user
if([PFFacebookUtils isLinkedWithUser:user])
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
NSDictionary *userData = (NSDictionary *)result;
NSString *facebookID = userData[@"id"];
NSString *name = userData[@"name"];
NSString *location = userData[@"location"][@"name"];
NSString *gender = userData[@"gender"];
NSString *birthday = userData[@"birthday"];
NSString *relationship = userData[@"relationship_status"];
[user setObject:userData[@"id"] forKey:@"fbId"];
[user setObject:userData[@"name"] forKey:@"name"];
[user setObject:userData[@"email"] forKey:@"email"];
[user saveInBackground];
NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large&return_ssl_resources=1", facebookID]];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:pictureURL];
// Run network request asynchronously
[NSURLConnection sendAsynchronousRequest:urlRequest
queue:[NSOperationQueue mainQueue]
completionHandler:
^(NSURLResponse *response, NSData *data, NSError *connectionError)
if (connectionError == nil && data != nil)
// Set the image in the header imageView
PFFile *profileImage=[PFFile fileWithData:data];
[user setObject:profileImage forKey:@"profileImage"];
[user saveInBackground];
];
];
[self dismissViewControllerAnimated:YES completion:nil];
如果我随后调用 [PFUser logOut] 并再次打开 PFLogInViewController,当我点击 facebook 图标再次登录时,facebook 微调器会无限旋转,并且我收到错误“尝试将 objectId 更改为已知的离线商店。”
如何退出当前用户,然后使用 PFLogInViewController 再次登录?
【问题讨论】:
【参考方案1】:如果我从 appDelegate 中删除 [Parse enableLocalDatastore]
,我将不再收到此错误。如果我没有固定任何对象,禁用它有什么缺点吗?如果没有网络连接,我还能使用“saveEventually”吗?
【讨论】:
【参考方案2】:我认为您正在尝试再次保存相同的对象(电子邮件)。
在首次登录时,该电子邮件 ID 将在第一时间存储。但是,注销后,您再次尝试存储相同的电子邮件。
尝试搜索 Parse 中已存在的条目。如果您想更新用户的其他详细信息,则可以使用 objectId 进行更新。
【讨论】:
didLogInUser
委托方法永远不会被第二次调用。错误在到达之前发生。【参考方案3】:
尝试从 PFFacebookUtils 中取消 PFUser 的链接,同时关闭活动的 Facebook 会话并清除它的令牌。
[[FBsession activeSession]closeAndClearTokenInformation];
希望这会有所帮助..
【讨论】:
我打电话给[PFFacebookUtils unlinkUser: [PFUser currentUser]]; [[FBSession activeSession]closeAndClearTokenInformation]; [PFUser logOut];
但仍然得到同样的错误。以上是关于PFLogInViewController 错误-使用 Parse 注销后无法登录 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
无法修改 PFLogInViewController logInButton 标题
解析 iOS SDK PFLoginViewController Facebook Segue