ASWebAuthenticationSession показывает только кнопку Отмена - PullRequest
0 голосов
/ 15 марта 2019

Я аутентифицирую наш веб-сервис, используя ASWebAuthenticationSession, и по какой-то причине единственным вариантом после окончательного перенаправления является Отмена . Раньше у меня это работало, и даже если я нажал Отмена, URL-адрес обратного вызова был отправлен через обработчик завершения, и я смог там проанализировать форму токена. Но теперь я просто получаю ошибку ASWebAuthenticationSessionErrorCodeCanceledLogin.

Как мне заставить ASWebAuthenticationSession показать кнопку Готово и завершить обработчик с URL обратного вызова? Что-то изменилось или сломалось в последнем обновлении iOS?

Как создать сеанс

if (@available(iOS 12.0, *)) {
    self.session = [[ASWebAuthenticationSession alloc]
                    initWithURL:@"http://service.com"
                    callbackURLScheme:@"http://website.com"
                    completionHandler:_sessionHandler];
     [self.session start];
}

Обработчик завершения

_sessionHandler = ^(NSURL * _Nullable callbackURL, NSError * _Nullable error) {
    NSLog(@"Callback Url: %@, Error: %@", callbackURL, error);
    if ( callbackURL != nil ) {
        __block NSString * token = [weakSelf webToken:@"token" fromUrl:callbackURL];
        weakSelf.completionHandler([weakSelf parseWebToken:token], error);
    }
    else
        weakSelf.completionHandler(nil, error);
};

Выход

URL обратного вызова: (ноль), ошибка: ошибка Домен = com.apple.AuthenticationServices.WebAuthenticationSession Code = 1 "(ноль)"

enter image description here

Как я уже говорил, это работало ранее, и я не уверен, где это сломалось. Тестовый сервис, который я использовал, не изменился, поэтому мне интересно, находится ли он в фреймворке или мне не хватает чего-то еще.

Должен ли веб-сервис отправлять определенный заголовок обратно в окончательный URL-адрес, чтобы ASWebAuthenticationSession показывал кнопку Готово и завершал обработчик с помощью URL-адреса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...