TGViewer
Bite the Byte Bite the Byte @bitethebyte · 3.38K subscribers
Post #278 3.2K
Важливість дизайну API

Коли я перший раз імплементував OAuth (звичайний, ніяк не пов’язаний із JWT, а то подумаєте ще) — а це була авторизація через Twitter — я втратив на те майже тиждень. Це було у 2009 році, і я тут подивився у Вікіпедію, що його навіть ще не стандартизували тоді. 🤪

Другий раз, авжеж, йшло сильно простіше, але все одно, заплутатися в ногах (до чого тут ноги?!), різних урлах, різних іменах цих урлів, хто кого куди посилає, хто, нарешті, кому лікар?! — дуже легко. Взагалі розклад виглядав так: береш якийсь django-oauth (чи шо там ще, різне бувало), читаєш 3 рази доку, з твітером працює, з фейсбуком спочатку натупив, потім працює, гугл щось знов змінив… Ладно, запинав це все, а через рік хочеться когось додати, і виявляється, що ніхто не знає, що робить.

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

І не те щоб я не розумів, що відбувається. Ну наче розумів, так, мене той перший раз із Твіттером якби роздуплив. Але доки були дуже мутні, я хотів то запинати пошвидше і не вкладався морально, і якось чіткості в голові не було.

Аж тут якось я натрапив на oauth.two — малесеньку лібу на кложі, фактично без залежностей, але головне: з фантастичним дизайном. Вона не робить HTTP-запити, не взаємодіє з базою, і взагалі має менше 50 рядків коду. Здавалося б, 50 рядків! Що вона там може?

Вона дає малесеньку абстрацію, клієнта для OAuth2-сервера, який потребує трохи конфігурації: урл для першого редиректа, урл для отримання аксес-токену, айді/секрет, і можливо скоупи. Ти прям береш і слухняно підставляєш потрібні значення, а ліба тобі взамін генерує потрібні запити — не робить їх сама, роби чим ти там в проєкті робиш, твоє діло — в лібі тільки власне протокол імплементований всередині.

Вона структурує роботу, яку треба зробити, і робить її очікуваною і зрозумілою. Найліпший результат з нею був, коли Епл на вихідних реджектнула Кастівську апку, бо треба зробити авторизацію через епл, якщо у вас вже є через гугл. І зранку ми це обговорили, а до обіду вже випустили реліз з працюючою авторизацією.

І коли обговорювали, як же круто, що наші розробники такі швидкі, панове розробники сказали: ну це Саня просто кльово систему авторизації зробив. Приємно, авжеж, але це не я! Це все маленька фантастична бібліотечка. Всього 50 рядків коду, а різкість наводить ой-вей. 😁

Оце — вершина дизайну. Simplicity is the ultimate sophistication.
  • 🔥 81
  • ❤ 5
  • 😁 3
More from @bitethebyte
  1. Aug 31, 2026‍Лагідна українізація дісталася до алібаби 😁
  2. Aug 24, 2026Вітаю всіх з днем відновлення незалежності! З цього приводу в ДОУ вийшов спецвипуск подкас…
  3. Aug 23, 2026А ви йдете на пікнік ДОУ? Я от нарешті йду. 😁 Дуже прикольно, що є івент, який якби конфе…
  4. Aug 13, 2026Щось зранку задумався над IBAN’ами, і випадково усвідомив, що вони — це ж така сама адреса…
  5. Jul 16, 2026Ну й відстойні ж новини. :( Нажаль, внутрішня політика знов перемогла здоровий глузд, але…
  6. Jun 10, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →