Facebook SDK 4.x权限问题iOS

时间:2015-04-23 10:24:40

标签: ios facebook facebook-graph-api

我正在尝试为登录用户的时间轴获取 Feed 。我有一个登录按钮,我通过了读取权限,包括user_posts。令人惊讶的是,Facebook并没有授予我这个许可,而忽略了它。

代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends", @"user_posts"];

    self.loginButton.delegate = self;

    if([FBSDKAccessToken currentAccessToken])
    {
        NSLog(@"Have access token");
        NSLog(@"permissions .... %@",[FBSDKAccessToken currentAccessToken].permissions);
        [self retrieveFeed];
    }

}

#pragma mark - Login Delegate

-(void) loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error
{
    NSLog(@"Login Successfully!!");
    NSLog(@"permissions .... %@",[FBSDKAccessToken currentAccessToken].permissions);

    [self retrieveFeed];

}

-(void) loginButtonDidLogOut:(FBSDKLoginButton *)loginButton
{

}

#pragma mark - Receive FB Feed

-(void) retrieveFeed
{       
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/feed" parameters:nil];

    FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init];
    [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

        NSLog(@"%@",result);

        if(error)
            NSLog(@"Some error FEED;;;;;; %@",error.localizedDescription);
    }];
    [connection start];
}

点击登录按钮,我获得以下权限屏幕。 Facebook忽略了user_posts权限。

enter image description here

即使我在登录后尝试获得此权限,Facebook也会告诉我我已经授权应用,即使没有授予此类权限!获得新权限的代码是:

-(void) checkForFeedPermission
{
    if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"user_posts"]) {

        NSLog(@"already granted feed access");
          [self retrieveFeed];

    } else {
        FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
        [loginManager logInWithReadPermissions:@[@"user_posts"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

            NSLog(@"requesting feed access");
             [self retrieveFeed];

        }];
    }
}

我一直在这个问题上敲了三天。请建议我哪里可以出错?感谢。

2 个答案:

答案 0 :(得分:1)

我认为不能使用user_posts作为标准Facebook developer documentation for permission,您必须提交您的Facebook应用以供审核,请参阅我附上明确说明的屏幕截图。

enter image description here

所以你必须提交你的facebook app for login review,然后你可以在loginTime设置这个权限

答案 1 :(得分:0)

如果您处于开发模式但尚未准备好发布应用以进行Facebook审核,那么最好的方法就是使用测试用户。在您的Facebook应用程序仪表板中,转到角色并创建一些测试用户。请注意,它是一个单独的选项卡,而不是第一个选项卡中的Testers。创建测试用户时,您可以默认指定应为该用户分配的权限。