2015-02-09 4 views
1

Я загрузил пример Parse AnyPic. Я начал изучать некоторые идеи для моего нового приложения, которое будет использовать Parse. Когда AnyPic сначала открывается, пользователю требуется войти в систему с помощью facebook. Я смог провести некоторое тестирование на симуляторе, но теперь, когда я начал работу с устройством, я не могу войти в систему через facebook. Когда я пытаюсь, он остается на экране входа в систему и просто меняет кнопку входа в систему, чтобы выйти из системы. Я прошел через код и обнаружил, что идентификатор пользователя facebook возвращается нуль. Все остальные данные в facebook, похоже, возвращают значения.Parse AnyPic Facebook userId возвращается nil

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, что дает симулятор, когда он преуспевает. Это не сработало. Я также попытался заменить мои собственные идентификаторы приложений facebook в приложении, чтобы увидеть, и он все еще не работает.

Я новичок в работе с социальными вещами, есть что-то, чего мне не хватает, чтобы настроить фейсбук? Или кто-нибудь работал с этим примером, знаете, как его исправить или уметь пропустить вход в facebook?

ответ

0

В итоге я переделал новый идентификатор приложения facebook. Я подвел новую информацию в синтаксический анализ и приложение. Я также понял, что неправильная учетная запись facebook была зарегистрирована на устройстве. Как только я вошел в аккаунт на facebook, который сделал новый идентификатор приложения facebook, он сразу сработал.

+0

Все еще испытывает эту же проблему. Попробовал создать новое приложение Facebook и использовать новые значения, как вы здесь описываете, и получить то же самое. Ошибка зарегистрирована: https://github.com/ParsePlatform/Anypic/issues/43 – stroz

0

У меня была такая же проблема при запуске Anypic на устройстве и отправлен билет поддержки с Facebook. Они подтвердили, что это проблема при входе в приложение Facebook и рекомендуется использовать PFFacebookUtils logInWithPermissions в качестве обходного пути, пока они не смогут изучить его дальше. Я изменил метод handleFacebookSession в PAPLogInViewController.m на код ниже и, наконец, смог войти в систему с помощью устройства!

- (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]; 
      } 
     } 
    }]; 
} 
Смежные вопросы