解析 AnyPic Facebook 用户 ID 返回 nil

Parse AnyPic Facebook userId is returning nil

我下载了 Parse 示例 AnyPic。我已经开始研究它,为我将使用 Parse 的新应用寻找一些想法。 当 AnyPic 首次打开时,它要求用户使用 facebook 登录。我已经能够在模拟器上进行一些测试,但是现在我已经在设备上启动了,我无法通过 facebook 登录。当我尝试时,它停留在登录屏幕上,只是将登录按钮更改为注销。我已经逐步完成代码,发现 facebook 用户 ID 返回 nil。所有其他 Facebook 信息似乎都在返回值。

NSString *accessToken = [[[FBSession activeSession] accessTokenData] accessToken];
    NSDate *expirationDate = [[[FBSession activeSession] accessTokenData] expirationDate];
    NSString *facebookUserId = [[[FBSession activeSession] accessTokenData] userID];

    if (!accessToken || !facebookUserId) {
        NSLog(@"Login failure. FB Access Token or user ID does not exist");
        return;
    }

facebokUserId返回nil,而其他人有信息。我已经尝试将 facebook 用户 ID 硬编码为模拟器在成功时提供的内容。这没有奏效。我也试过把自己的facebook app ID替换到app里看,还是不行。

我刚开始接触社交内容,设置 Facebook 时是否缺少某些内容?或者有没有人使用过这个例子知道如何修复它或能够跳过 facebook 登录?

我最终重新制作了一个新的 Facebook 应用 ID。我将新信息替换为解析和应用程序。我还发现在设备上登录了错误的 facebook 帐户。一旦我登录到创建新的 Facebook 应用程序 ID 的 Facebook 帐户,它就可以立即使用。

当 运行 在设备上使用 Anypic 并向 Facebook 提交支持票时,我遇到了同样的问题。他们确认这是使用 Facebook 应用程序登录时的一个问题,并建议使用 PFFFacebookUtils logInWithPermissions 作为解决方法,直到他们能够进一步调查为止。我将 PAPLogInViewController.m 中的 handleFacebookSession 方法更改为以下代码,终于可以使用设备登录了!

- (void)handleFacebookSession {
    if ([PFUser currentUser]) {
        if (self.delegate && [self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
            [self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:[PFUser currentUser]];
        }
        return;
    }

    NSArray *permissionsArray = @[ @"public_profile",
                                   @"user_friends",
                                   @"email"];

    self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];

    // Login PFUser using Facebook
    [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {

        if (!user) {
            NSString *errorMessage = nil;
            if (!error) {
                NSLog(@"Uh oh. The user cancelled the Facebook login.");
                errorMessage = @"Uh oh. The user cancelled the Facebook login.";
            } else {
                NSLog(@"Uh oh. An error occurred: %@", error);
                errorMessage = [error localizedDescription];
            }
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error"
                                                            message:errorMessage
                                                           delegate:nil
                                                  cancelButtonTitle:nil
                                                  otherButtonTitles:@"Dismiss", nil];
            [alert show];
        } else {
            if (user.isNew) {
                NSLog(@"User with facebook signed up and logged in!");
            } else {
                NSLog(@"User with facebook logged in!");
            }

            if (!error) {
                [self.hud removeFromSuperview];
                if (self.delegate) {
                    if ([self.delegate respondsToSelector:@selector(logInViewControllerDidLogUserIn:)]) {
                        [self.delegate performSelector:@selector(logInViewControllerDidLogUserIn:) withObject:user];
                    }
                }
            } else {
                [self cancelLogIn:error];
            }
        }
    }];
}