1.4Kпросмотров
39.0%от подписчиков
12 марта 2026 г.
📷 ФотоScore: 1.5K
🔨 Быстрый гайд по ASWebAuthenticationSession.
Если вы задавались целью реализовать веб авторизацию или оценить задачу, то сталкивались с вопросом а как это правильно сделать. ASWebAuthenticationSession ждёт правильный URL‑callback, чтобы понять, что авторизация закончилась, и вернуть пользователя в приложение. Каждый раз приходится вспоминать, оставлю корректный гайд тут. Есть два способа: 1. Custom URL scheme
🔵Регистрируешь, например, myapp:// в Info.plist (CFBundleURLTypes).
🔵В OAuth‑провайдере указываешь redirect URI вида myapp://callback.
🔵ASWebAuthenticationSession стартуешь с callbackURLScheme = "myapp", и когда страница редиректит на myapp://..., сессия ловит URL и отдаёт его в completion:
let session = ASWebAuthenticationSession(
url: authURL,
callbackURLScheme: "myapp"
) { callbackURL, error in
// разбираем токен из callbackURL
}
🟢Плюсы: просто, минимум инфраструктуры. 🔴Минусы: не очень красиво, возможны диалоги "Открыть в myapp?" 2. Universal links (HTTPS)
🔵Вместо myapp://callback — обычный https://myapp.com/auth/callback
🔵Нужно настроить apple-app-site-association на сервере
🔵Выглядит более профессионально, URL нормальный, без кастомных схем, меньше лишних алертов
🔵С точки зрения ASWebAuthenticationSession логика та же: он ждёт редирект на твой callback‑URL и пробрасывает его в completion.
func handleCallback(url: URL) { guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false), let token = components.queryItems?.first(where: { $0.name == "token" })?.value else { return }
}