【问题标题】:Issue with SLComposeViewController ,when app permission is disabled当应用程序权限被禁用时,SLComposeViewController 出现问题
【发布时间】:2013-02-15 23:15:16
【问题描述】:

我正在使用 SLComposeViewController 将文章发布到 facebook 墙上。当在设备设置中为 facebook 关闭应用权限时, 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];

        }

【问题讨论】:

  • 代码会很有帮助...
  • @0x7fffffff 我已经添加了代码..
  • 相当肯定,当你使用 SLComposeViewController 时,整个权限都是由 iOS 管理的;从技术上讲,这是 iOS 发布,而不是您的应用。显示在用户时间线上的帖子可能是“通过 iOS”,对吧?
  • @ThiagoCampezzi:是的,它说“针对 iOS”。无论如何要检查“是否在设备设置中为 Facebook 禁用了应用权限?..
  • 您可以尝试在之前打开一个 Facebook 会话并查看它是否有效(如果您使用的是最新的 Facebook SDK,您可能会在 FBSession 类中调用+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions allowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler;,并将 NO 作为 allowLoginUI 参数传递并检查完成处理程序中的错误;但是,如果您尝试在不通过 SLComposeViewController 的情况下以编程方式向 Facebook 发帖(即,如果您有自己的自定义界面),则主要使用这种方法。

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


【解决方案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];


                    });
                 }
            }];

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2021-12-30
    • 2014-08-11
    • 2023-03-22
    • 1970-01-01
    • 2021-12-26
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多