ASWebAuthenticationSession в MacOS 10.15 (Catalina)

Я пытаюсь внедрить новый ASWebAuthenticationSession в MacOS 10.15, и меня немного смущает callbackURLScheme.

Заголовочный файл для ASWebAuthenticationSession говорит:

URL-адрес обратного вызова обычно имеет настраиваемую схему URL-адресов. Чтобы приложение получило URL-адрес обратного вызова, ему необходимо либо зарегистрировать настраиваемую схему URL-адресов в своем Info.plist, либо установить для схемы аргумент callbackURLScheme в инициализаторе.

Итак, я инициализирую так:

self.webAuthSession = [[ASWebAuthenticationSession alloc] initWithURL:self.authURL
                                                    callbackURLScheme:@"myurlscheme://"
                                                    completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) {

}];

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

Итак, после нажатия кнопки "Войти" в моем приложении для MacOS Safari представляет окно, в котором я могу войти в службу. После успешного входа в систему происходит перенаправление, но веб-страница просто переходит на экран с сообщением

Safari не может открыть указанный адрес.

Я вижу, что это адрес myurlscheme://?code=1234567890abcdefgetc... что правильно, но явно не вызывает ASWebAuthenticationSession Перезвоните.

Если я добавлю схему URL-адресов в список, то в окне сафари отобразится запрос, спрашивающий, хотите ли вы открыть его в моем приложении.

Я знаю, что затем могу получить код из App Delegate application:openURLs: метод, но это неудобно, имеет ненужное приглашение для пользователя щелкнуть, а также оставляет ASWebAuth...окно сафари открыто. Все это должно происходить автоматически через обратный вызов.

Единственный способ вызвать обратный вызов - закрыть окно сафари, и в этом случае он обратится с ошибкой.

2 ответа

Я только что вернулся к этому, чтобы попробовать еще раз, и, похоже, он отлично работает на MacOS 10.15.1 а также 10.15.2 beta.

Я заметил, что callbackURLScheme параметр не должен включать ://

Я не могу вернуться и снова протестировать его на 10.15 но я счастлив использовать это сейчас, предполагая, что все на 10.15 обновился бы до 10.15.1

Даррен прав в MacOS, вы должны удалить:// из callbackURLScheme. iOS работает нормально независимо от того, // вы или нет. Однако в MacOS Catalyst, похоже, есть ошибка. Мое приложение фокусируется, когда я вхожу в систему, но не получает обратного вызова. Пока не нашел способа это исправить.

Другие вопросы по тегам