1

私は iOS アプリに取り組んでおり、シンプルな Facebook 共有機能を備えています。基本的には、フィードに投稿することでこのアプリへのリンクを共有できます。

私はこの方法でFacebook SDK 3.2.1を使用しています:

NSMutableDictionary *params = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys:
        @"Test tweet", @"name",
        @"Test", @"description",
        @"http://myapplink.com", 
        @"link",
        @"http://myapppicture.com/picture.jpg", 
        @"picture",
        nil];

[FBWebDialogs presentFeedDialogModallyWithSession:nil
    parameters:params
    handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
        if (error) {
            NSLog(@"Error publishing story.");
        } else {
            if (result == FBWebDialogResultDialogNotCompleted) {
                NSLog(@"User canceled story publishing.");
            } else {
                NSLog(@"No error!");
            }
         }
     }];

問題は、このコードを実行すると Facebook のログイン ダイアログが表示され、ログイン後に画面に次のエラーが表示されることです。「エラーが発生しました。後でもう一度やり直してください」。コンソールには何も記録されていませんが、このダイアログを閉じると、「ユーザーがストーリーの公開をキャンセルしました」のみが記録されます。

アプリケーションの設定は非常に基本的なものです - Facebook が要求したようにすべてをセットアップしました: http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/

私の質問は、同じ問題に遭遇した人はいますか? 可能な解決策は何ですか?ありがとう!

4

1 に答える 1

7

今ではこれはかなり単純で、私はちょっとばかげているように感じます:)しかし、とにかく、これが同じ問題に直面する人の助けになることを願っています.

一般に、キーと値のペアを「params」辞書に追加することで問題を解決しました。キー @「app_id」の値は @「my_facebook_app_id」です。したがって、正しい辞書は次のようになります。

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"11111111", @"app_id",
                               @"Test tweet", @"name",
                               @"Test", @"description",
                               @"http://sometestsite", @"link",
                             @"http://site.com/testimage.jpg", @"picture",
                               nil];

Facebook SDK によると、app_id キーは「必須ですが、ほとんどの SDK で自動的に指定されます」 - MyApp-Info.plist ファイルを介して app_id を提供したにもかかわらず、自動的に指定されていないようです (または何か間違ったことをしました)。

同じ問題が発生した場合は、この @"app_id" キーを追加してみてください。これが役立つはずです。

于 2013-04-06T18:24:22.377 に答える