5

Tôi đang cố gắng sử dụng Facebook iOS SDK 3.5 để xuất bản một hành động Open Graph. Hành động của tôi là: take a photophoto có yêu cầu bổ sung string thuộc tính có tên filter.Facebook không chấp nhận các thuộc tính Open Graph tùy chỉnh

tôi đang tạo ra đối tượng đồ thị của tôi (tất cả các giá trị có giá trị và làm việc):

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

Sau đó, tôi thêm bộ lọc của tôi:

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

tôi cố gắng đăng các đối tượng, và tôi có thể xác nhận rằng thuộc tính bộ lọc của tôi ở đó (đã bật hành vi ghi nhật ký FBSetting cho các yêu cầu URL để hiển thị dữ liệu yêu cầu):

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"} 

tôi có thể thấy sở hữu bộ lọc của tôi ở đó, nhưng câu trả lời là thế này:

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; 
    }; 

Vâng, nó là ở đó. Tôi đã thử tất cả kết hợp có thể như:

object[@"data"] = @{@"tonerapp:filter": filterName}; // gói vào các dữ liệu đối tượng

object[@"data"] = @{@"filter": filterName}; // gói vào dữ liệu và loại bỏ không gian tên

object[@"toner:filter"] = filterName; // tên ứng dụng thay cho tên namespace

object[@"filter"] = filterName; // không có tên không gian tên tại tất cả

[object setObject:filterName forKey:@"tonerapp:filter"]; // ký hiệu setobject

[object setValue:filterName forKey:@"tonerapp:filter"]; // setValue ký hiệu

[object setObject:filterName forKey:@"filter"]; // setobject VÀ mà không namespace ...

và có thể nhiều hơn nữa. Tôi đã thử mọi thứ, nhưng API luôn thất bại với cùng một lỗi. Tôi có thể xác minh phần còn lại của đối tượng là chính xác, nếu tôi truy cập ứng dụng của mình trên Facebook và đặt filteroptional thay vì required, nó sẽ đăng thành công. Nó có phải là một lỗi/tài liệu không đầy đủ với Graph API, hay tôi bị mù đến nỗi tôi không thể thấy điều gì đó hiển nhiên ở đây?

Xin cảm ơn, Có thể.

+0

Bạn giải quyết vấn đề này? (Tôi đã tự mình gặp phải vấn đề tương tự: http://stackoverflow.com/q/20376634/824515) – Magnus

+0

từ những gì tôi nhớ, (đã lâu rồi và tôi đã quên trả lời câu hỏi của riêng mình ở đây lúc đó) về thuộc tính URL. mô tả lỗi đã gây hiểu nhầm.Tôi đã sử dụng '[FBGraphObject openGraphObjectForPostWithType: @" tonerapp: photo " tiêu đề: title image: imageData url: @" http://tonerapp.info " mô tả: desc];' và nó hoạt động. thử đặt URL khi đăng. –

+0

@Magnus hãy cho tôi biết nếu nó giải quyết được vấn đề để tôi có thể thêm câu trả lời, có lẽ bạn có thể thêm câu trả lời ngay dưới đây. –

Trả lời

0

Đảm bảo filterName của bạn được mã hóa URL. Tôi đã có cùng một loại vấn đề với tên của một bộ phim cũng là một hành động tùy chỉnh trên biểu đồ. Hãy thử chỉ để đăng một giá trị bằng tay chỉ một chuỗi đơn giản và cho chúng tôi biết.

4

chỉ cần đặt chúng dưới "dữ liệu"

object[@"data"][@"youcustomproperty"] = @"smth";