禁用应用程序权限时SLComposeViewController的问题

时间:2013-03-01 12:37:58

标签: ios facebook access-token facebook-access-token slcomposeviewcontroller

使用SLComposeViewController将文章发布到Facebook wall。当在设备设置中关闭Facebook的App权限时, SLComposeViewController仍然通过将文章发布到Facebook墙来工作。这是一个SDK问题吗?

    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];

        }

1 个答案:

答案 0 :(得分: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];


                    });
                 }
            }];