Facebook не принимает пользовательские свойства Open Graph
Я пытаюсь использовать Facebook iOS SDK 3.5 для публикации действия Open Graph. Мое действие:take
photo
, а также photo
имеет дополнительное обязательное string
свойство по имени filter
,
Я создаю свой объект графа (все значения действительны и работают):
NSMutableDictionary<FBOpenGraphObject> *object =
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo"
title:@"photo"
image:imageData
url:nil
description:title];
Затем я добавляю свой фильтр:
object[@"tonerapp:filter"] = filterName;
Я пытаюсь опубликовать объект, и я могу подтвердить, что мое свойство фильтра присутствует (включено ведение журнала FBSetting для запросов URL для отображения данных запроса):
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"];
// Сетобъект И без пространства имен...
и возможно больше. Я перепробовал все, но API всегда дает сбой с одной и той же ошибкой. Я могу проверить правильность остальной части объекта, если я захожу в свое приложение в Facebook и устанавливаю filter
как optional
вместо required
, это отправляет успешно. Это ошибка / недостаточная документация с Graph API, или я настолько слеп, что не вижу здесь ничего очевидного?
Спасибо, могу.
2 ответа
Просто поместите их под "данные"
object[@"data"][@"youcustomproperty"] = @"smth";
Убедитесь, что ваш filterName имеет URL-кодировку. У меня была такая же проблема с названием фильма, которое было также пользовательским действием на графике. Попробуйте просто опубликовать ручное значение только простую строку и сообщите нам.