iOS Facebook SDK 3.2通过图路径请求检查权限



我试图检查用户是否已经授予发布权限。如果他之前没有授予权限,我将他导航到权限屏幕:requestNewPublishPermissions

  -(void)checkPermissions
    {
        // Get the most recent status
        [FBRequestConnection
         startWithGraphPath:@"me/permissions"
         completionHandler:^(FBRequestConnection *connection,
                             id result,
                             NSError *error) {
             if (!error) { 
                    //This Condition Never Executed
                 if([[result objectForKey:@"data"] objectForKey:@"publish_actions"])
                 {
                     //permissions exist
                 }
                 else
                 {
                     [self openSessionForPublishPermissions];
                 }
                 NSString *permission = [[result objectForKey:@"data"] objectForKey:@"publish_actions"];
                 NSLog(@"permissions data = %@",data);
             }
             else
             {
                 NSLog(@"error"); //Control goes to this block
             }
         }];
    }

上面的代码if(!error)块永远不会被执行,它总是返回error

我哪里错了?我错过什么了吗?

可以看到活动会话中的权限。下面是HelloFacebookSample:

if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
    // permission does not exist
} else {
    // permission exists
}

您可以检查会话是否处于活动状态并请求发布权限,而不是手动检查权限:如果用户已经授予权限,则不会发布额外的确认对话框。参见下面的代码示例:

- (void)requestWritePermission:(UIViewController *)viewController channel:(NSString *)channel callback:(void(^)(BOOL success))callback
{   
    if ([FBSession.activeSession isOpen])
    {
        [FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"]
                                              defaultAudience:FBSessionDefaultAudienceFriends
                                            completionHandler:^(FBSession *session, NSError *error) {
                                                callback(error == nil);
                                            }];
    }
    else
    {
       // Attempt to request publish permission without read permission. 
    }
}

代码不完整,但应该可以让您开始。

最新更新