7

アプリケーションにFacebookを統合して、Web サイトのリンクを共有しています。これを達成するためにフィード ダイアログを使用しており、このチュートリアルに従っています:
https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/

ログインして Facebook に投稿することはできましたが、投稿が成功したときにメッセージを追加したかったのです。チュートリアルにはこれが組み込まれていますが、投稿するたびに、ユーザーがキャンセルをクリックしたときに表示されるメッセージである「ユーザーがストーリーの公開をキャンセルしました。 」がログに表示されます。resultURLまた、ハンドラーが受け取ったパラメーターは、投稿が成功した場合でも常に nil であることをデバッガーで確認しました。

最初は の構成の問題Facebook Appだと思いましたが、テストすることにしました。RPSSampleフレームワークに付属の を開き、ビュー コントローラーのメソッドのpresentRequestsDialogModallyWithSession呼び出しに完了ハンドラーを追加しました。そこでも成功した投稿でnil を取得していました。clickInviteFriendsRPSFriendsViewController.mresultURL

私は何かが足りないのですか?

3.5 SDK バージョンが非常に新しいことは知っていますが、ドキュメントによると、 Facebook Web ダイアログresultURLを介して投稿した後に有効なパラメーターを取得する必要があるため、それがバグなのか、コールバックまたはハンドラーがどこかに欠けているのかはわかりません。 .

念のため、これはFeed Web Dialogへの呼び出しです。チュートリアルにあるものと比べて小さな変更があります (実際にはより単純です)。

- (void)publish: (EntityToShare *)entityToShare {
NSMutableDictionary *params =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
 entityToShare.link, @"link",
 nil];

// Invoke the dialog
[FBWebDialogs presentFeedDialogModallyWithSession:nil
                                       parameters:params
                                          handler:
 ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
     if (error) {
         // Error launching the dialog or publishing a story.
         NSLog(@"Error publishing story.");
     } else {
         if (result == FBWebDialogResultDialogNotCompleted) {
             // User clicked the "x" icon
             NSLog(@"User canceled story publishing.");
         } else {
             // Handle the publish feed callback
             NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
             if (![urlParams valueForKey:@"post_id"]) {
                 // User clicked the Cancel button
                 NSLog(@"User canceled story publishing.");
             } else {
                 // User clicked the Share button
                 NSString *msg = [NSString stringWithFormat:
                                  @"Posted story, id: %@",
                                  [urlParams valueForKey:@"post_id"]];
                 NSLog(@"%@", msg);
                 // Show the result in an alert
                 [[[UIAlertView alloc] initWithTitle:@"Result"
                                             message:msg
                                            delegate:nil
                                   cancelButtonTitle:@"OK!"
                                   otherButtonTitles:nil]
                  show];
             }
         }
     }
 }];
}
4

1 に答える 1

9

We have a fix for this in place and will be pushed out soon.

Edited:

This has now been fixed in the SDK release 3.5.1 Check it out here: https://developers.facebook.com/ios/

于 2013-04-24T04:18:41.777 に答える