-1

Facebook で投稿を共有したいのですが、iOS 6 を使用すると問題なく動作しますが、iOS 5 と iOS 5.1 ではログインの問題が発生し、ログインして既に承認されているページに移動し、[OK] ボタンを押すと、これをこの2ページで何度も繰り返します ここに画像の説明を入力

OKを押すと返ってきます

ここに画像の説明を入力

 case 1: // facebook
        {
            if(NSClassFromString(@"SLComposeViewController"))
            {
                SLComposeViewController *fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
                SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){

                    [fbController dismissViewControllerAnimated:YES completion:nil];

                    switch(result){
                        case SLComposeViewControllerResultCancelled:
                        default:
                        {
                            NSLog(@"Cancelled.....");

                        }
                            break;
                        case SLComposeViewControllerResultDone:
                        {
                            ALERT_VIEW(@"Successfully posted to facebook.");
                        }
                            break;
                    }};

                [fbController setInitialText:quotesss];
                [fbController setCompletionHandler:completionHandler];
                [self presentViewController:fbController animated:YES completion:nil];
            }
            else
            {
                DEFacebookComposeViewControllerCompletionHandler completionHandler = ^(DEFacebookComposeViewControllerResult result) {
                    switch (result) {
                        case DEFacebookComposeViewControllerResultCancelled:
                            NSLog(@"Facebook Result: Cancelled");
                            break;
                        case DEFacebookComposeViewControllerResultDone:
                            ALERT_VIEW(@"Successfully posted to facebook.");
                            break;
                    }

                    [self dismissViewControllerAnimated:YES completion:nil];
                };
                DEFacebookComposeViewController *facebookViewComposer = [[DEFacebookComposeViewController alloc] init];
                self.modalPresentationStyle = UIModalPresentationCurrentContext;

                [facebookViewComposer setInitialText:quotesss];

                facebookViewComposer.completionHandler = completionHandler;
                [self presentViewController:facebookViewComposer animated:YES completion:nil];
                [facebookViewComposer release];
            }
            break;
        }
        case 2: // twitter
        {
            NSString *text = [NSString stringWithFormat:@"%@", quotesss ];
            if([text length] > 135)
            {
                text = [NSString stringWithFormat:@"%@%@", quotesss ,@"..."];
                text = [text substringToIndex:135];

            }

            if(NSClassFromString(@"SLComposeViewController"))
            {
                SLComposeViewController *twitterController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
                SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){

                    [twitterController dismissViewControllerAnimated:YES completion:nil];

                    switch(result){
                        case SLComposeViewControllerResultCancelled:
                        default:
                        {
                            NSLog(@"Cancelled.....");

                        }
                            break;
                        case SLComposeViewControllerResultDone:
                        {
                            ALERT_VIEW(@"Successfully posted to twitter.");
                        }
                            break;
                      }};

                [twitterController setInitialText:text];
                [twitterController setCompletionHandler:completionHandler];
                [self presentViewController:twitterController animated:YES completion:nil];
            }

            else
            {
                DETweetComposeViewControllerCompletionHandler completionHandler = ^(DETweetComposeViewControllerResult result) {
                    switch (result) {
                        case DETweetComposeViewControllerResultCancelled:
                            NSLog(@"Twitter Result: Cancelled");
                            break;
                        case DETweetComposeViewControllerResultDone:

                            ALERT_VIEW(@"Successfully posted to twitter.");
                            break;
                    }
                    [self dismissViewControllerAnimated:YES completion:nil];
                 };

                DETweetComposeViewController *tcvc = [[[DETweetComposeViewController alloc] init] autorelease];
                self.modalPresentationStyle = UIModalPresentationCurrentContext;
                [tcvc setInitialText:quotesss];
                tcvc.completionHandler = completionHandler;

                [self presentViewController:tcvc animated:YES completion:nil];

            }

            break;
        }
4

1 に答える 1

0

あなたのコードから、問題はこのコードにあることがわかりました.iOS 5では、FacebookはSLComposeでは利用できません.Twitterのみが利用できるので、FaceBookはDEFaceBookによって処理されます

            DEFacebookComposeViewControllerCompletionHandler completionHandler = ^(DEFacebookComposeViewControllerResult result) {
                switch (result) {
                    case DEFacebookComposeViewControllerResultCancelled:
                        NSLog(@"Facebook Result: Cancelled");
                        break;
                    case DEFacebookComposeViewControllerResultDone:
                        ALERT_VIEW(@"Successfully posted to facebook.");
                        break;
                }

                [self dismissViewControllerAnimated:YES completion:nil];
            };
            DEFacebookComposeViewController *facebookViewComposer = [[DEFacebookComposeViewController alloc] init];
            self.modalPresentationStyle = UIModalPresentationCurrentContext;

            [facebookViewComposer setInitialText:quotesss];

            facebookViewComposer.completionHandler = completionHandler;
            [self presentViewController:facebookViewComposer animated:YES completion:nil];
            [facebookViewComposer release];
        }

したがって、appdelegate に移動し、このメソッドをチェックして、有効なトークン (アプリケーションurlを含むトークン形式applicationURLSchema://"token") がこのメソッドに入っているかどうかを確認します。FBSessionhandleOpenURL

 - (BOOL)application:(UIApplication *)application  openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
 annotation:(id)annotation {

 // attempt to extract a token from the url
 return [FBSession.activeSession handleOpenURL:url];
 }
于 2012-12-28T11:51:49.323 に答える