У меня нет ответов на все вопросы, но вот как мое приложение публикует обновление статуса с вложением (или на фейсбуке говорят «publish_stream»). Я создал одноэлементный класс под названием FacebookController, в котором я вызываю:
facebookObject = [[Facebook alloc] initWithAppId:apiKey];
и затем вызовите этот метод, чтобы получить разрешение на публикацию:
[[FacebookController facebookObject] authorize:[NSArray arrayWithObjects:@"publish_stream",nil] delegate:self];
Мое приложение получает информацию о пользователе с помощью этого метода:
[[FacebookController facebookObject] requestWithGraphPath:@"me" andDelegate:self];
Вам также потребуется использовать что-то вроде этих вызовов для проверки правильности сеанса и сохранения необходимой информации:
[[FacebookController facebookObject] isSessionValid]
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:[[FacebookController facebookObject] accessToken] forKey:@"AccessToken"];
[prefs setObject:[[FacebookController facebookObject] expirationDate] forKey:@"ExpirationDate"];
[prefs synchronize];
И тогда вам понадобится этот метод для фактической публикации:
[[FacebookController facebookObject] requestWithMethodName:@"Stream.publish" andParams:params andHttpMethod:@"POST" andDelegate:self];
params - это NSDictionary, который в моем случае включал в себя сообщение, вложение, action_links и target_id.
Полагаю, вы могли бы включить свою фотографию в качестве вложения, но не уверены, какие именно шаги вам понадобятся для этого. В любом случае это должно заставить вас двигаться в правильном направлении.
К сожалению, документация Facebook оставляет желать лучшего.
Удачи!