Создайте единый вход с помощью SFAuthenticationSession в iOS 11
Я работаю над двумя приложениями для iOS, которые используют одни и те же токены цепочки для ключей, которые они получают, когда пользователь входит в любое из приложений, вводя свое имя пользователя и пароль в веб-представлении. Токены, сохраненные в цепочке для ключей, ограничены по времени в течение нескольких часов / дней - они обновляются, когда пользователь использует приложение и делает запрос / вводит элементы, которые открываются в браузере.
Вплоть до выпуска iOS 11 веб-представление в приложении представляло собой экземпляр SFSafariViewController, и это было очень удобно, поскольку оно делило файлы cookie между приложениями, и как только пользователь входил в браузер в одном приложении, он автоматически входил в систему. -в другом приложении, таким образом, получая опыт единого входа.
В iOS 11 изменилось поведение SFSafariViewController, и он больше не делит файлы cookie между различными экземплярами SFSafariViewController в моих двух приложениях. Вместо этого Apple хочет, чтобы мы использовали SFAuthenticationSession для достижения того же поведения.
В моем приложении у меня есть таблица из примерно 50 строк, почти все они открывают разные URL в SFSafariViewController. Так что теперь, в iOS 11, мне нужно каждый раз создавать новый экземпляр SFAuthenticationSession (URL не может быть изменен после создания экземпляра), и для фактического отображения веб-представления мне нужно вызвать метод start() в этом случае. Однако этот метод может быть вызван только один раз для одного и того же экземпляра (в противном случае он будет возвращать "ложь" и ничего не делать), и каждый раз, когда он вызывается, он выдает уведомление о том, что "myapp" хочет использовать "mydomain.com" чтобы войти в систему. Это означает, что мои пользователи видят это предупреждающее сообщение при каждом нажатии на строку в таблице.
Есть ли способ заставить мое приложение показывать предупреждающее сообщение о согласии только один раз, например, в первый раз или что-то еще? Я хочу, чтобы у моих пользователей был опыт единого входа в моих двух приложениях, поэтому я в первую очередь использовал SFSafariViewController, но я не хочу, чтобы они видели это надоедливое предупреждение при каждом нажатии, которое они делают в приложении.
1 ответ
В настоящее время нет способа, чтобы предупреждение показывалось только один раз, используя SFAuthenticationSession
мы столкнулись с той же проблемой в наших приложениях.
Я вместе со многими другими подал в Apple сообщение об ошибке, попросив их показать это только один раз, как вы предложили. Конец этого потока GitHub обсуждает предупреждение.