如何正确请求facebook权限ios



我试图检索一堆facebook信息从用户使用的应用程序使用解析和facebook sdk,但我还没有能够成功地做到这一点。

首先检查用户是否登录,如果没有,我显示带有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,我不确定我做错了什么。在文档中它说,如果开发者想要检索自己的信息,应用程序不需要经过审查,所以问题不在于应用程序没有经过审查。

为什么我不能检索信息?是因为我要求的信息有误吗?任何帮助将非常感激!

如果你的应用程序还没有通过登录审查,你就不能请求扩展权限。唯一的例外是当你在测试应用时使用admin/tester/developer用户。

  • https://developers.facebook.com/docs/facebook-login/review/what-is-login-review
  • https://developers.facebook.com/docs/apps/changelog v2_0

最新更新