2015-06-09 4 views
0

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

Сначала я проверяю, вошел ли пользователь в систему, и если они не отображают контроллер просмотра синтаксического анализа с разрешениями facebook.

- (void)viewDidAppear:(BOOL)animated { 
[super viewDidAppear:animated]; 

if (![PFUser currentUser] || ![PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]) { 

    NSArray *permissionsArray = @[@"public_profile", @"user_birthday", @"user_photos", @"user_about_me", @"user_likes", @"user_relationship_details"]; 

    LoginViewController *logInViewController = [[LoginViewController alloc] init]; 
    [logInViewController setDelegate:self]; 

    [logInViewController setFacebookPermissions:[NSArray arrayWithObjects:permissionsArray, nil]]; 

    [logInViewController setFields:PFLogInFieldsFacebook | PFLogInFieldsDismissButton]; 

    [self presentViewController:logInViewController animated:YES completion:NULL]; 

} else { 
     [self getUserInfo]; 
    } 
} 

Затем, после входа пользователя в систему, я пытаюсь получить следующие разрешения, например.

-(void)getUserInfo { 

FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me" parameters:nil]; 
FBSDKGraphRequest *requestBirthday = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me/user_birthday" parameters:nil]; 
FBSDKGraphRequest *requestPhotos = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me/photos" parameters:nil]; 
FBSDKGraphRequest *requestAboutMe = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me/about_me" parameters:nil]; 
FBSDKGraphRequest *requestLikes = [[FBSDKGraphRequest alloc] 
            initWithGraphPath:@"/me/likes" 
            parameters:nil 
            HTTPMethod:@"GET"]; 
FBSDKGraphRequest *requestRelationship = [[FBSDKGraphRequest alloc]initWithGraphPath:@"me/relationship_details" parameters:nil]; 


FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; 

[connection addRequest:requestMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
    userName = result[@"name"]; 
    userGender = result[@"gender"]; 
    userId = result[@"id"]; 

    if (connection) { 
     [self setMe]; 
    } 

}]; 

[connection addRequest:requestBirthday completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

}]; 

[connection addRequest:requestPhotos completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

}]; 

[connection addRequest:requestAboutMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

}]; 

[connection addRequest:requestLikes completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

}]; 

[connection addRequest:requestRelationship completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

}]; 


    [connection start]; 

} 

В requestMe работает отлично, и я получить информацию пользователей, однако, когда я получаю NSLog для вывода результата любых других разрешений, его всегда null и я не уверен, что я делаю неправильно. В документации говорится, что приложение не должно проходить проверку, если разработчик хочет получить информацию о себе, поэтому проблема заключается не в том, что приложение не было просмотрено.

Почему я не могу получить информацию? Это потому, что я неправильно запрашиваю информацию? Любая помощь будет принята с благодарностью!

+0

Я думаю, что это не проблема на ур кода стороне. Пожалуйста, убедитесь, что ваша учетная запись facebook связана с FacebookID. Вы добавили пользователя тестера в настройку facebook? вы можете использовать access_token для запуска facebookGraph. – Bejibun

+0

Да, я знаю об этом. Я могу войти в мое приложение и получить некоторую базовую информацию, но я ищу, чтобы исправить другие разрешения, которые я прошу, чтобы они были доступны. – Josh

+0

Вы получили журнал ответов с сервера? Получаете ли вы access_granted для получения специального разрешения? – Bejibun

ответ

1

Вы не можете запрашивать расширенные разрешения, если ваше приложение еще не прошло проверку входа в систему. Единственное исключение - если вы используете администратора/тестировщика/разработчика при тестировании своего приложения.

См

Смежные вопросы