0

我正在使用SLComposeViewController发布文章到Facebook墙。当设备设置中的Facebook关闭应用程序权限时, SLComposeViewController仍然通过在Facebook墙上发布文章工作。这是一个SDK问题?SLComposeViewController问题,当应用程序权限被禁用

SLComposeViewController *facebookViewController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 
    { 
     SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result) 
     { 

      [facebookViewController dismissViewControllerAnimated:YES completion:nil]; 

      switch(result){ 
       case SLComposeViewControllerResultCancelled: 
       default: 
       { 
        [[[UIAlertView alloc] initWithTitle:@"Facebook" 
               message:@"Action Cancelled" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil] 
        show]; 

        [self dismissView]; 

       } 
        break; 
       case SLComposeViewControllerResultDone: 
       { 
        [[[UIAlertView alloc] initWithTitle:@"Facebook" 
               message:@"Posted to Facebook successfully" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil] 
        show]; 

        [self dismissView]; 

       } 
        break; 
      }}; 

     [facebookViewController addImage:_shareImage]; 
     [facebookViewController setInitialText:_shareTitle]; 
     [facebookViewController addURL:_shareLink]; 
     [facebookViewController setCompletionHandler:completionHandler]; 

     [self.dashboard presentViewController:facebookViewController animated:YES completion:nil]; 

     } 
+0

代码将是有益的... – 2013-03-01 12:44:51

+0

@我为0x7FFFFFFF添加的代码.. – padma4success 2013-03-04 05:47:27

+0

敢肯定,当你使用SLComposeViewController整个事情的权限是由iOS的管理;从技术上讲,这是iOS发布,而不是你的应用。显示在用户时间轴上的帖子可能会说“通过iOS”,对吧? – 2013-03-04 06:39:26

回答

1

我自己找到答案。 检查下面的代码

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) 
    { 
     ACAccountStore *accountStore=[[ACAccountStore alloc]init]; 
     ACAccountType * facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

     // At first, we only ask for the basic read permission 
     NSArray * permissions = @[@"publish_stream"]; 

     NSDictionary * dict = @{ACFacebookAppIdKey : @"facebook_appid", ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceEveryone}; 

     [accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) { 
      if (granted && error == nil) 
      { 

     SLComposeViewController *facebookViewController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
      SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result) 
      { 

       [facebookViewController dismissViewControllerAnimated:YES completion:nil]; 

       switch(result){ 
        case SLComposeViewControllerResultCancelled: 
        default: 
        { 
         [self dismissView]; 

        } 
         break; 
        case SLComposeViewControllerResultDone: 
        { 
         [[[UIAlertView alloc] initWithTitle:@"Facebook" 
                message:@"Posted to Facebook successfully" 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil] 
         show]; 

         [self dismissView]; 

        } 
         break; 
       }}; 

      [facebookViewController addImage:_shareImage]; 
      [facebookViewController setInitialText:_shareTitle]; 
      [facebookViewController addURL:_shareLink]; 
      [facebookViewController setCompletionHandler:completionHandler]; 

      [self.dashboard presentViewController:facebookViewController animated:YES completion:nil]; 
      } 
       else 
       { 
        dispatch_async(dispatch_get_main_queue(), ^{ 
         [self dismissView]; 
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message: @"App Permissions disabled in facebook settings." 
                     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
         [alert show]; 


        }); 
       } 
      }]; 
相关问题