Почему диалоговое окно Facebook iOS для публикации каналов исчезает после входа в систему? - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь использовать диалоговый вызов 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];

Ответы [ 2 ]

1 голос
/ 27 марта 2012

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

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

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

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

0 голосов
/ 27 марта 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];
...