Алты санның орнына бір басу
Бүгін бесінші рет Planq-ты ашамын. Email теремін. Кодты күтемін. Алты санды көшіремін. Кіремін. Бір сағаттан кейін тағы. Email, код, алты сан. OTP жұмыс істейді. Бірақ күніне отыз сан - бұл кіру емес, рәсім.

Не үшін қиындату
Google OAuth - жарты күндік интеграция сияқты естіледі. Firebase SDK, authlib, жаңа кестелер, миграциялар. Бірақ тоқтап, не керек екенін ойласаң - пайдаланушының email-і керек. Google оны береді. Email жүйеде бар. OTP мен Google - бұл сол email-дің иесі екеніңді дәлелдеудің екі түрлі жолы. Бір функция, басқа кіреберіс.
Backend-те екі роут. Біріншісі state генерациялайды, cookie-ге салады, Google-ға бағыттайды. Екіншісі callback қабылдайды, email алады, OTP-мен бірдей _authenticate_user() шақырады. Жаңа тәуелділік жоқ. httpx бұрыннан орнатылған. Он екі мың жолдық кітапхананың орнына үш HTTP-сұрау.
Frontend-те бір сілтеме. <a href="/auth/google">. JS SDK жоқ. Түйме мен OTP-форма арасында «немесе» бөлгіші. Басты, аккаунтты таңдады, іште.
Мобильді қосымша
Вебте бәрі қарапайым - cookies. Android-да браузердегі cookies қосымшаға қайтып келмейді. Басқа тетік керек.
Сұрауда бір параметр: ?platform=mobile. Backend оны state-ке сақтайды. Авторизациядан кейін cookies пен frontend-ке бағыттаудың орнына deep link жібереді: planq://auth/callback query-де токендермен. Қосымша оны ұстайды, сақтайды, ішке кіргізеді. Сол backend, сол ағым, соңында бір тармақталу.
Билд сынды. Жаңа AndroidX тәуелділіктеріне Gradle-дің жаңартылған нұсқасы қажет болды. Нұсқаны көтердім, жиналды.
Не жасамадым
Бір провайдер үшін кітапхана орнатқан жоқпын. ID Token-ді парсылаған жоқпын - server-side exchange-тен кейін userinfo API-ды сұрасаң болады, не керек. Деректер қоры схемасына тиген жоқпын. Аккаунттарды байланыстыру UI жасаған жоқпын. Бір email, бір пайдаланушы, кірудің екі жолы.
OTP қалды. Корпоративтік Google-да шектеулер болғандарға. Play Services жоқ мобильдіге. Қосалқы кіру ретінде.
Бірақ негізгі жол енді бір басу. Күніне отыз сан нөлге айналды.


