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 不再被识别?

自定义 PFLogInViewController

无法修改 PFLogInViewController logInButton 标题

解析 iOS SDK PFLoginViewController Facebook Segue

PFLoginViewController didLogin 在使用 Facebook 登录时从未调用过

解析登录错误不会弹出