5

Open Graph アクションを公開するために Facebook iOS SDK 3.5 を使用しようとしています。私のアクションは: takeaphotoで、という名前photoの追加の必須stringプロパティがありますfilter

グラフ オブジェクトを作成しています (すべての値が有効で機能しています)。

NSMutableDictionary<FBOpenGraphObject> *object =
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo"
                                                title:@"photo"
                                                image:imageData
                                                  url:nil
                                          description:title];

次に、フィルターを追加します。

object[@"tonerapp:filter"] = filterName;

オブジェクトを投稿しようとすると、フィルター プロパティがそこにあることを確認できます (URL 要求の FBSetting ログ動作を有効にして、要求データを表示します)。

Body (w/o attachments): 
object: {"description":"","type":"tonerapp:photo",
"tonerapp:filter":"classic","data":{},
"fbsdk:create_object":true,
"image":{"url":"fbstaging:\/\/graph.facebook.com\/staging_resources\/MDExMDE1MjkzNzU1Njc3MDE0MjoxNTM4NzgwNjUy","user_generated":"true"},
"title":"photo"}

そこに自分のフィルター プロパティが表示されますが、応答は次のようになります。

error =    {
        code = 100;
        message = "(#100) Object Missing a Required Value: 
Object at URL '' of type 'tonerapp:photo' is invalid because 
a required property 'tonerapp:filter' of type 'string' was not provided.";
        type = OAuthException;
    };

まあ、それはそこにあります。次のようなすべての可能な組み合わせを試しました。

object[@"data"] = @{@"tonerapp:filter": filterName};// データ オブジェクトにラップする

object[@"data"] = @{@"filter": filterName};// データにラップして名前空間を削除

object[@"toner:filter"] = filterName;//名前空間名ではなくアプリ名

object[@"filter"] = filterName;// 名前空間名がまったくない

[object setObject:filterName forKey:@"tonerapp:filter"];//オブジェクト表記の設定

[object setValue:filterName forKey:@"tonerapp:filter"];//設定値表記

[object setObject:filterName forKey:@"filter"];//setobject AND 名前空間なし...

そしておそらくもっと。すべてを試しましたが、API は常に同じエラーで失敗します。オブジェクトの残りの部分が正しいことを確認できます。Facebook で自分のアプリに移動し、代わりに を設定filterするoptionalrequired、正常に投稿されます。Graph API のバグ/不十分なドキュメントですか、それともここで明らかなことが見えないほど盲目ですか?

ありがとう、カン。

4

2 に答える 2