Стендап Сьогодні
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

22.10.2025

Авторизація OAuth з iOS

#СтохастичнийТаймтрекер

Невдовзі мій стохастичний таймтрекер Ping набуде інтеграції з Beeminder. (Beeminder це сервіс для обліку просування до цілей — який штрафує тебе, якщо ти не виконуєш обіцянок.) Власне, ідею стохастичного таймтрекінгу винайшли саме автори цього сервісу, тому така інтеграція зробить Ping дійсно корисним для однієї дуже важливої спільноти.

Інтеграція починається з автентифікації. Вона у Beeminder потребує діалогу OAuth. Я, звісно, багато разів проходив таку автентифікацію в чужих застосунках на iOS - знаєш, коли відкривається браузер і ти там вводиш логін/пароль. Але не мав гадки, як її реалізують.

Виявилось, все ще простіше, ніж я думав. Браузер відкриває не сам застосунок, а фреймворк Authentication Services. Нам достатньо побудувати URL для авторизації та створити ASWebAuthenticationSession. Та другий момент — щоб повернутися назад, URL редиректу повинен мати особливу схему, щось на кшталт ping://beeminder-auth. Коли браузер побачить цю схему, то завершить автентифікацію та поверне нам остаточний URL - в якому сидить токен.

Гадаю, таким саме чином можна зробити авторизацію через Google або інші провайдери OAuth. А мені залишалося тільки зберегти токен. Для чого є API Keychain services. Я, якщо чесно, спочатку збирався просто в базу зберігати, але виявилось, що є безпечніший спосіб.