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) 块永远不会执行,它总是返回错误

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

4

2 回答 2

2

您可以在活动会话中查看权限。这是在 HelloFacebookSample 中的完成方式:

if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
    // permission does not exist
} else {
    // permission exists
}
于 2013-07-03T15:57:02.143 回答
0

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

- (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. 
    }
}

代码不完整,但应该可以帮助您入门。

于 2014-04-29T07:50:51.863 回答