Почему диалоговое окно Facebook iOS для публикации фида исчезает после входа в систему?

Я пытаюсь использовать диалоговый вызов «ленты» Facebook iOS, чтобы пользователь моего приложения мог поделиться чем-то на своей стене Facebook. Когда приложение facebook не установлено, оно пытается позволить им аутентифицироваться в приложении (предположительно, используя веб-представление). Проблема в том, что этот диалог просто исчезает после аутентификации. Я ожидал, что веб-представление вернется к представлению общего доступа «канал».

Как определить, что они аутентифицированы, чтобы я мог повторно открыть диалоговое окно канала?

Я добавил fbDidLogin в свой делегат приложения, но он не вызывается. (Я не был уверен, будет ли это обычно называться или нет, но я читал, что несколько человек рекомендовали это.)

    SBJSON *jsonWriter = [SBJSON new];

    // The action links to be shown with the post in the feed
    NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
                                                      @"More Videos",@"name",@"http://www.example.com/",@"link", nil], nil];
    NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"Test Caption", @"caption",
                                   @"Test Description", @"description",
                                   @"https://s3.amazonaws.com/example/images/test.png",
                                   @"source",
                                   self.video.blogLink, @"link",
                                   @"01234567890123", @"app_id",
                                   actionLinksStr, @"actions",
                                   nil];
    [delegate facebook].sessionDelegate = delegate;
    [[delegate facebook] dialog:@"feed" andParams:params andDelegate:self];

person Mason G. Zhwiti    schedule 26.03.2012    source источник
comment
У меня также была эта проблема, когда я некоторое время назад играл с SDK Facebook и мог найти решение.   -  person Darren    schedule 27.03.2012


Ответы (2)


Оказывается, проблема та же, что и у тех, кто сообщает, что диалог исчезает у них сразу. В SDK Facebook есть ошибка, связанная с обработкой ошибки -999, с решением, описанным в этом комментарии к SO.

Я наконец понял, что у меня та же проблема (хотя и проявляется немного по-другому), когда я начал слушать метод FBDialogDelegate:

- (void)dialog:(FBDialog*)dialog didFailWithError:(NSError *)error

В описании ошибки упоминалась ошибка -999, упомянутая выше, что привело меня к ответу. К счастью, код, зарегистрированный на github, работал безупречно. Мне просто нужно было добавить его в кодовую базу SDK и перекомпилировать файл .a lib, а затем включить его в свой проект.

person Mason G. Zhwiti    schedule 27.03.2012

Вы реализовали протокол Facebook FBSession в своем контроллере представления? Чтобы определить, что пользователь аутентифицирован, вы должны вызвать isSessionValid:

if (![[self.fbAppDelegate facebook] isSessionValid]) {
    NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil];

    [[self.fbAppDelegate facebook] authorize:permissions];

}

и авторизуйтесь в приложении:

[self authorizeWithFBAppAuth:NO safariAuth:NO];
person Michal Zaborowski    schedule 26.03.2012
comment
Спасибо за ответ. Верно ли все это, даже если вы не пытаетесь разрешить приложению действовать от имени пользователя, т. е. вы просто хотите разрешить пользователю делиться на своей стене по мере необходимости? - person Mason G. Zhwiti; 27.03.2012