【问题标题】:Parse AnyPic Facebook userId is returning nilParse AnyPic Facebook userId 返回 nil
【发布时间】:2015-02-09 20:58:46
【问题描述】:

我下载了 Parse 示例 AnyPic。我已经开始为我将使用 Parse 的新应用程序寻找一些想法。 当 AnyPic 首次打开时,它要求用户使用 facebook 登录。我已经能够在模拟器上进行一些测试,但是现在我已经在设备上启动了我无法通过 facebook 登录。当我尝试时,它会停留在登录屏幕上,只是将登录按钮更改为注销。我单步执行了代码,发现 facebook 用户 ID 恢复为零。所有其他 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 登录?

【问题讨论】:

    标签: ios facebook parse-platform


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    我在设备上运行 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];
                }
            }
        }];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      相关资源
      最近更新 更多