W.S
W.S

Reputation: 931

iOS Facebook SDK 3.2 Check Permissions via Graph Path Request

I am trying to check if user has already granted publish permission or not. if he has not granted permissions before then i navigate him to permissions screen via: 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
             }
         }];

    }

In code above if(!error) block is never executed and it always returns Error

Where i'm going wrong? Am i missing something?

Upvotes: 2

Views: 1611

Answers (2)

Zorayr
Zorayr

Reputation: 24962

Instead of manually checking the permissions, you could check if the session is active and request publish permissions: if the user has already granted the permissions, an additional confirmation dialog will not be posted. See the code sample below:

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

The code is not complete, but should get you started.

Upvotes: 0

You can see permissions in the active session. Here is how it's done in the HelloFacebookSample :

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

Upvotes: 2

Related Questions