3

読んでくれてありがとう!

ユーザーが友達をアプリに招待できるようにする Facebook リクエストを作成しようとしています。

 NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys:nil];

        [FBWebDialogs
         presentRequestsDialogModallyWithSession:nil
         message:@"Learn how to make your iOS apps social."
         title:@"Test"
         parameters:params
         handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
             if (error) {
                 // Error launching the dialog or sending the request.
                 NSLog(@"Error sending request.");
             } else {
                 if (result == FBWebDialogResultDialogNotCompleted) {
                     // User clicked the "x" icon
                     NSLog(@"User canceled request.");
                 } else {
                     // Handle the send request callback
                     NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
                     if (![urlParams valueForKey:@"request"]) {
                         // User clicked the Cancel button
                         NSLog(@"User canceled request.");
                     } else {
                         // User clicked the Send button
                         NSString *requestID = [urlParams valueForKey:@"request"];
                         NSLog(@"Request ID: %@", requestID);
                     }
                 }
             }
         }];    

}

これは、Facebook のドキュメント コードのほぼ完全なコピーです。そして、それはある程度まで機能します。ユーザーは友達を選択でき、リクエストは消えて友達に受信され、通知として表示されます-これまでのところすべて問題ありません.

問題は、「ハンドラー」からの応答を取得しようとすると、resultURLnil で何も含まれていないことです。その後、「ユーザーがリクエストをキャンセルしました」というログメッセージが表示されます。

なぜ私は何も返さないのですか?これが必要な主な理由は、リクエストが送信された友人を知る必要があるためです。

助けてくれてありがとう!

4

2 に答える 2

0

セッションを開いていないと思います..これを使用してセッションを開いてください。

if (!FBSession.activeSession.isOpen) {
        // if the session is closed, then we open it here, and establish a handler for state changes
            [FBSession openActiveSessionWithReadPermissions:nil
                                               allowLoginUI:YES
                                          completionHandler:^(FBSession *session,
                                                                 FBSessionState state,
                                                                 NSError *error) {
     }];
    }
于 2013-06-18T10:53:11.367 に答える
0

nil の空のセッションをに渡しているようですpresentRequestsDialogModallyWithSession

代わりに使用FBSession.activeSessionして、リクエストを実行するのに十分な権限があることを確認してください (ただし、そうでない場合は、別の別のエラーが発生します)

于 2013-05-28T15:32:08.143 に答える