Вы авторизуете пользователя непосредственно перед отображением диалогового окна?Я помог другому парню, у которого была такая же проблема некоторое время назад: Facebook iOS SDK - Странные эффекты при записи в статус
В этом случае авторизация и отображение диалогового окна сработаютдиалог для отображения.Вы должны быть уверены, что будете делать только по одному за раз (аутентифицироваться> ждать успеха> показывать канал).
РЕДАКТИРОВАТЬ: Это в значительной степени, как я это делаю:
MyClass.h
Переменная экземпляра, в которой я сохраняю объект для совместного использования (если требуется авторизация):
MyObject *_objectToShare;
...
@property (nonatomic, retain) MyObject *objectToShare; // @synthesized in MyClass.m
MyClass.m
Метод, используемый для совместного использования объекта (через NSNotification
):
/**
* Method invoked to share an object on Facebook.
*/
- (void)shareObject:(NSNotification *)note {
// show dialog if authorized, otherwise authenticate first
if ([_facebook isSessionValid]) {
// Use Facebook share dialog
NSMutableDictionary *params = [NSMutableDictionary dictionary]; // define key-value params to send to FB
// show feed dialog
[_facebook dialog:@"feed" andParams:params andDelegate:self];
// Clear object to share (as it's been shared now)
self.objectToShare = nil;
}
else {
// authorize with defined permissions
[_facebook authorize:[NSArray arrayWithObjects:@"publish_stream", @"publish_actions", nil]]; // the permissions you need (@see http://developers.facebook.com/docs/reference/api/permissions/)
// save a reference to the track to share (after auth is done)
self.objectToShare = channel;
}
}
Объект доступен, когда пользователь авторизован Facebook:
/**
* From FBSessionDelegate. Invoke method to share object if any is defined.
*/
- (void)fbDidLogin {
// share queued object if it's defined
if (self.objectToShare) {
[self shareObject:nil]; // don't pass any notification
}
}