2

ネイティブ ダイアログで iOS SDK を使用して、オブジェクトとアクションを投稿しようとしています。

を呼び出すpresentShareDialogWithOpenGraphActionと、Facebook アプリが開き、私の投稿を含むダイアログが短時間表示された後、次のエラーでアプリに戻ります。

Could not generate preview text

私のコードは次のようになります。

NSDictionary* object = @{
                         @"fbsdk:create_object": @YES,
                         @"type": @"appsterbator.app_idea",
                         @"title": @"test",
                         @"url": @"http://test.com",
                         };
id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
[action setObject:object
           forKey:@"app_idea"];


[FBDialogs presentShareDialogWithOpenGraphAction:action actionType:@"app_idea.create"
                             previewPropertyName:@"app_idea"
                                         handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                          NSLog(@"%@", error);
                                      }];

また、実際に URL を持たない Open Graph オブジェクトを投稿することは可能ですか?

4

6 に答える 6

3

同じ症状がありましたが、別の修正がありました。Facebook SDK 3.5.* は、共有ダイアログがベータ版でなくなったためです。

カスタム オブジェクト グラフ ストーリーがありました: Solve -> Puzzle。OG を扱うのはこれが初めてだったので、慣れている人にとっては当たり前のことのように思えるかもしれませんが、長い間行き詰まってしまったので共有したいと思います。

開発者サイトで共有ダイアログの例を実行しましたが、Open Graph 関連の共有は単純なコピー ペーストでは機能しません。OG オブジェクトがアプリ ID や URL ホストなどに関連付けられていることが原因であると考えました。オブジェクトの OG データを提供できるように Web ホストをセットアップし、そのホストなどを許可するようにアプリを構成しました。

そこで、「opengraph / stories -> Get Code」ポップオーバーにあるパラメーターを使用するようにサンプル コードを調整することにしました。プラットフォームを iOS SDK に設定すると、次の Create Action が得られました。

NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];
action[@"puzzle"] = @"http://samples.ogp.me/463417983744195";

[FBRequestConnection startForPostWithGraphPath:@"me/shapeshuffle:solve"
                               graphObject:action
                         completionHandler:^(FBRequestConnection *connection,
                                             id result,
                                             NSError *error) {
                             // handle the result
                         }];

ストーリーとアプリ固有の値をサンプル コードに置き換えたため、質問に記載されているエラーと症状が発生しました。OGオブジェクトをホストしているサーバー、FBアプリの設定、共有ダイアログをポップするさまざまな方法などをいじることを認めるよりも長い時間を費やしました.

問題の根本は、ダイアログをポップする際に、FB がアクションとオブジェクトをアプリの構成と一致させることができなかったことです。そのため、プレビュー テキストの生成に関連するわずかにあいまいなエラー コードが発生しました。「me/shapeshuffle:solve」(「Get Code」ツールのアクション文字列) が解決されないため、FB はアクションを見つけられませんでした。Get Code ツールで使用できるさまざまなオプションをすべて理解していれば、これを回避できたかもしれません。シンプルに見えました。

この便利なチュートリアルを介して Graph API エクスプローラーを使用し、FB ツールから取得した文字列から実際に機能するものへの次のマッピングを作成しました。

アクション: me/shapeshuffle:solve => shapeshuffle:solve

3人の小さなキャラクターには多くの苦痛。完成したコードは次のようになります。

NSString *objectUrl = [NSString stringWithFormat:@"%@puzzleId=%d", @"http://myhost.com/puzzle/object?", puzzleId];

id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
    [action setObject:objectUrl forKey:@"puzzle"];
    [action setObject:timeString forKey:@"time"];

[FBDialogs presentShareDialogWithOpenGraphAction:action
                                      actionType:@"shapeshuffle:solve"
                             previewPropertyName:@"puzzle"
                                         handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                             if(error) {
                                                 NSLog(@"Error: %@", error.description);
                                             } else {
                                                 NSLog(@"Success!");
                                             }
                                         }];
于 2013-06-28T17:49:23.733 に答える
1

Had the same issue. Make sure the App Domains in Basic Info contains the oAuth domain. The odd thing I found is that in order to add this you need to enable this can only be added if you enable Page Tab or Mobile Web or one of the other options.

于 2013-06-07T04:42:50.203 に答える
0

問題: 「プレビュー テキストを生成できませんでした」は、同じコンテンツを数回共有しようとした場合に発生します。オープングラフの機能を確認するたびに、共有するコンテンツを変更してみてください。

于 2013-08-27T13:31:30.980 に答える