2013-08-26 11 views
0

我這樣做了Facebook每次如何不要求發佈許可?

[self vSuspendAndHaltThisThreadTillUnsuspendedWhileDoing:^{ 
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     [self.ACAstore requestAccessToAccountsWithType:self.ACAccounts options:[self dicPostOptions] completion:^(BOOL granted, NSError *error) { 
      self.bPermissionToAccessStoreGranted=granted; 
      [self vContinue]; 
     }]; 
    }]; 
}]; 

基本上我要求出版許可。我想要做的是檢查這樣的發佈權限是否已被授予,然後再次詢問。

如何做?

回答

0

可用於檢查權限:

 if(![postRequest.session.permissions containsObject:@"publish_actions"]) 
+0

什麼是postRequest?從這裏開始新的程序開始。我正在使用社交框架。不是Facebook的SDK。 –

0

,您可根據FBRequestme/permissions開放圖形API。它將返回一個字典的響應,其中密鑰是權限。

FBRequest *req = [FBRequest requestWithGraphPath:@"me/permissions" parameters:Nil HTTPMethod:@"GET"]; 
[req startWithCompletionHandler: ^(FBRequestConnection *connection, 
NSDictionary* result, 
NSError *error) { 
     BOOL canPublish = FALSE; 
     if (!error) 
     { 
     FBGraphObject *data = [result objectForKey:@"data"]; 
     for(NSDictionary<FBGraphObject> *aKey in data) 
     { 
      canPublish = [[aKey objectForKey:@"publish_stream"] boolValue]; 
     } 
     } 
     else 
     { 
     NSLog(@"%@", error); 
     } 

     NSLog(@"%@", canPublish ? @"I have publish perms" : @"I don't have publish perms"); 
}]; 
+0

但我正在使用社交框架。如果我使用社交框架,我需要做些什麼。 –

0

試試這個 -

首先實現所有的應用程序委託Facebook的SDK委託方法。現在

- (IBAction)loginWithFacebookButtonTapped:(id)sender 
{ 
    IntubeAppDelegate *delegat = (IntubeAppDelegate*)[[UIApplication sharedApplication] delegate]; 
    [delegat doLoginAndSwitch]; 
} 

,在你的appDelegate -

-(void) doLoginAndSwitch 
{  
    [self openSessionWithAllowLoginUI:YES]; 
} 

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI 
{ 
    NSArray *permissions = [NSArray arrayWithObjects:@"email", nil]; 
    return [FBSession openActiveSessionWithPublishPermissions:permissions 
             defaultAudience:FBSessionDefaultAudienceFriends 
             allowLoginUI:YES 
            completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

             [self sessionStateChanged:session 
                  state:state 
                  error:error]; 

            }]; 
} 

-(BOOL)openSessionWithAllowPublishStreamPermission:(BOOL)allowLoginUI 
{ 
    NSArray *permissions = [NSArray arrayWithObjects:@"publish_actions",@"publish_stream", nil]; 

[[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone completionHandler:^(FBSession *session, NSError *error){ 
}]; 
    return YES; 
} 

- (void)sessionStateChanged:(FBSession *)session 
       state:(FBSessionState)state 
       error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: 
      if(!error) 
      { 
       // NSLog(@"FBSessionStateOpen :- logged in"); 

       [self openSessionWithAllowPublishStreamPermission:YES]; 

       // Your code 
      } 
    }  
} 

我希望你會得到你現在的願望。 :)

相關問題