Публикация пользовательской истории Facebook с использованием вызовов API из приложения IOS
Мне нужно опубликовать историю Open Graph на стене Facebook из моего приложения. Я следовал текущему руководству разработчиков Facebook.
Я создал объект, действие и историю на панели инструментов Facebook. Затем в моем приложении сделайте следующий код:
создать объект:
NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object.provisionedForPost = YES;
object[@"title"] = @"test title";
object[@"type"] = @"myapp:my_object_type";
object[@"description"] = @"test discription";
object[@"url"] = @"http://example.com";
object[@"image"] = @[@{@"url": [result objectForKey:@"uri"], @"user_generated" : @"false" }];
и отправьте это:
[FBRequestConnection startForPostOpenGraphObject:object completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(!error) {
NSString *objectId = [result objectForKey:@"id"];
NSLog(@"object id %@",objectId);
} else {
NSLog(@"Error posting the Open Graph object to the Object API: %@", error);
}
}];
} else {
NSLog(@"Error staging an image: %@", error);
}
}];
Получил идентификатор объекта в качестве результата.
Затем создайте действие и свяжите его с объектом:
id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
[action setObject:objectId forKey:@"my_object_type"];
FBOpenGraphActionParams *params = [[FBOpenGraphActionParams alloc] init];
params.action = action;
params.actionType = @"myapp:my_app_action";
И опубликовать его в Facebook:
[FBRequestConnection startForPostWithGraphPath:@"/me/myapp:my_app_action" graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(!error) {
NSLog(@"OG story posted, story id: %@", [result objectForKey:@"id"]);
[[[UIAlertView alloc] initWithTitle:@"OG story posted"
message:@"Check your Facebook profile or activity log to see the story."
delegate:self
cancelButtonTitle:@"OK!"
otherButtonTitles:nil] show];
} else {
NSLog(@"Encountered an error posting to Open Graph: %@", error);
}
}];
В результате я получил сообщение, что история OG была успешно опубликована, но при переходе на Facebook в ленте или на временной шкале ничего нет, только изображение добавлено в фотоальбом пользователя.
1 ответ
Решение
Ну, не знаю, в чем была проблема, но теперь это работает со следующим кодом:
FBRequestConnection *connection = [[FBRequestConnection alloc]init];
NSMutableDictionary <FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object[@"type"] = @"myapp:my_object_type";
object[@"title"] = @"title";
object[@"url"] = @"http://example.com";
object[@"image"] = @"http://image.png";
object[@"description"] = @"description";
FBRequest *objectRequest = [FBRequest requestForPostOpenGraphObject:object];
[connection addRequest:objectRequest completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (error) {
NSLog(@"Error: %@",error.description);
}
} batchEntryName:@"objectCreate"];
NSMutableDictionary <FBOpenGraphAction> *action = [FBGraphObject openGraphActionForPost];
action[@"buy"] = @"{result=objectCreate:$.id}";
action[@"fb:explicitly_shared"] = @"true";
FBRequest *actionRequest = [FBRequest requestForPostWithGraphPath:@"me/myapp:my_app_action" graphObject:action];
[connection addRequest:actionRequest completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (error) {
NSLog(@"error: %@",error.description);
} else {
NSLog(@"posted with id %@", result[@"id"]);
}
}];
[connection start];