TL;др; см. вопрос ниже.
В моем приложении у меня есть логин, который использует SFSafariViewController и ASWebAuthenticationSession, который соответствует потоку OAuth 2.0 (с использованием библиотеки AppAuth).
Вход работает, и файлы cookie передаются Safari, как и ожидалось. Благодаря совместному использованию файлов cookie пользователи автоматически входят в систему, если они используют приложение Safari.
Однако, вернувшись в приложение, если я снова запущу SFSafariViewController, файлы cookie отсутствуют. Это меня удивляет, поскольку я думал, что Cookie Store один и тот же для SFSafariViewController и Safari, и он явно работал в направлении от SFSafariVC к приложению Safari при входе в систему.
Разве он не предназначен для работы наоборот — от Safari к SFSafariViewController, или это ошибка?
Я не нашел четких утверждений в документации.
Конечно, я не устанавливал эфемерную сессию верно, но согласно документации это будет противоположно тому, чего я хочу достичь:
Когда не используется временный сеанс, все файлы cookie, кроме сеансовых файлов cookie, доступны браузеру.
Я также нашел каким-то образом связанные радары, такие как http://www.openradar.me/33323462 и http://www.openradar.me/radar?id=5036182937272320 или этот пост stackoverflow: Почему SFSafariWebViewController не передает файлы cookie должным образом в Safari? но они не отвечают на мой вопрос.
Согласно этому комментарию, это может сработать, если у файлов cookie есть дата истечения срока действия (установленная на будущую дату). Я проверил файлы cookie — у них всех есть дата истечения срока действия в будущем.
Мой вопрос: я делаю что-то неправильно или это ожидаемое поведение, заключающееся в том, что SFSafariViewController не получает файлы cookie из более раннего экземпляра SFSafariViewController в том же приложении или из Safari?
Подробнее здесь: https://stackoverflow.com/questions/629 ... controller