解析AnyPic Facebook userId返回零

时间:2015-02-09 20:58:46

标签: ios facebook parse-platform

我下载了Parse示例AnyPic。我已经开始研究它将使用Parse的新应用程序的一些想法。 当AnyPic首次打开时,它要求用户使用facebook登录。我已经能够在模拟器上进行一些测试,但是现在我已经开始使用设备了,我无法通过Facebook登录。当我尝试它时,它会保留在登录屏幕上,只需更改登录按钮即可注销。我已经逐步完成了代码,发现facebook userID回来了。所有其他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返回零,而其他人有信息。我已经尝试将facebook用户ID硬编码到模拟器成功时提供的内容。这没效果。我也尝试将自己的Facebook应用ID替换为应用程序以查看,但它仍无法正常工作。

我是处理社交活动的新手,是否有一些我缺少设置Facebook的东西?或者有没有人使用这个例子知道如何解决它或能够跳过Facebook登录?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在设备上运行Anypic并在Facebook上提交支持票时,我遇到了同样的问题。他们确认在使用Facebook应用程序登录时出现问题,并建议使用PFFacebookUtils 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];
            }
        }
    }];
}