Уебинар

FastAPI среща Google Authentication

Кристиян Ташев (Трейнър; софтуерен инженер)

Семинар за интегриране на Google authentication в backend приложение на Python с FastAPI, включително какво представлява FastAPI, ролята на бисквитките и разликата между автентикация и авторизация. Втората част е демо от нулата на минималистичен проект — създаване на OAuth client ID за web приложение в Google и настройване на authorized redirect (callback) URL.

Кадърът е от сървъра на YouTube. Самият плейър — и всичко, което той зарежда — идва едва след като пуснете видеото.

Описание

Тема: FastAPI среща Google Authentication
Трейнър: Кристиян Ташев
Дата: 09.07.2024

Научете повече за Software University: http://softuni.bg.

Следете за нашите курсове, семинари и обучения във Facebook: http://fb.com/SoftwareUniversity

Описанието е на Software University (SoftUni).

Препис

Автоматичен препис — може да съдържа грешки — сверявайте с видеото, преди да цитирате.

Клик върху времето пуска видеото от този момент.

↗здравейте на всички

↗а ще започна оттам първо да се представя

↗кой съм аз с какво се занимавам и и така

Покажи целия препис — още 1504 абзаца (~8021 думи)

↗нататък съвсем накратко аз съм кристиян

↗ташев днес аз ще водя този кратък

↗семинар

↗а този семинар ще е свързан с изцяло с

↗python по-конкретно fast api защо fast

↗api защото fast api е супер кул поне

↗според мене а кой съм аз

↗а аз работя в софтуерна компания вече

↗може би да кажем около пеше седем години

↗като към днешна дата съм софтуерен

↗инженер там занимавам се основно с

↗python преди това съм се занимавал

↗изцяло с

↗а c shar тоест завършил съм академия

↗със csp след това се преквалифицирах към

↗python по-интересно за мен е че съм

↗водил многократно

↗лекции на на съвсем различни теми тоест

↗водил съм

↗лекции на тема примерно

↗а тестинг водил съм лекции които са били

↗лекции за

↗а chat gpt и така нататък съвсем

↗накратко това е за мен да знаете кой

↗какво ще ви представи днес а днешната

↗лекция е точно това днешната лекция е

↗fast api среща google

↗authentication защо избрах точно тази

↗лекция защото

↗а когато комуникирам с различни

↗девелопъри разбирам и а тоест усещам че

↗те имат супер много затруднения точно да

↗да а направят някаква интеграция с

↗google authentication тук говорим изцяло

↗за backend девелопъри защото знаем че

↗във фронтенда е малко

↗по-различно днешната адженда е а първо

↗ще си поговорим какво е fast api след

↗това какво са

↗кукита след това какво е аутентикация

↗какво е ауторизация тъй като има супер

↗много объркване точно по тази тема много

↗хора смятат че аутентикация и

↗авторизация е едно и също което реално

↗не е така

↗а след това защо избрах точно google

↗автентикацията ще си поговорим малко и

↗след това ще имаме едно кратко демо

↗кратко демо а демото какво ще

↗представлява демото ще представлява

↗наистина много минималистичен проект на

↗fast api с google аутентикация from

↗scratch имайте м предвид сега тук нещо

↗много важно че в демото няма да спазваме

↗абсолютно всички без практис за

↗структури на проекти и така така нататък

↗ще се опитаме да го направим възможно

↗най-минималистичната

↗да се създаде fast api е създаден съвсем

↗наскоро това е рейк за python който е

↗изцяло backend framework а той е

↗създаден от нло а през 2018 година

↗причината да го създаде е че преди това

↗той е работил супер много с jango който

↗е страхотен фрейър не ме разбирайте

↗погрешно но джан със себе си носи супер

↗много

↗а неща които не винаги са ни изцяло

↗нужни и това е причината да се създаде а

↗fast api fast api е на четвърто място а

↗сред всички бен ремъци а като към днешна

↗дата може би не към днешна към вчерашна

↗дата в

↗github имаше 73 000 и

↗300 звезди което е супер много като

↗трябва да вземете в предвид че тук като

↗казвам че е на четвърто място имам

↗предвид под всички

↗програмни езици не говоря само за python

↗разбира се на първо място е джато който

↗jango а има 78 000 звезди което е не чак

↗много повече спрямо fast api но тук

↗трябва да имате нещо на предвид че fast

↗api е наистина супер а скорошен фрейър

↗който е едва на ст години а

↗джато е създадено 2005

↗година което какво ни казва че fast api

↗се представя страхотно в последните

↗години защо защо избрах fast api защото

↗fast api е супер бърз какво го прави

↗бърз бърз го прави това че в него може

↗без проблем както и ще видите в демото

↗да се правят асинхронни заявки това е

↗много ключово тъй като всички знаем че

↗към днешна дата в python world така

↗казано а асинхронни заявки не се случва

↗чак толкова лесно ако мога така да кажа

↗съответно а fast api го предоставя това

↗изцяло on the fly супер лесен е за

↗ползване ще видите че буквално се сепва

↗за броени секунди не е нужно нещо

↗допълнително също така получаваме

↗изцялото тична документация какво имам

↗предвид тук под документация тук става

↗въпрос за swag страници dogs и така

↗нататък тъй като знаем че когато ние

↗като back

↗девелопъри е супер ако предоставим

↗такава документация

↗на frontend девелопърите съответно ете

↗могат да тестват в горе-долу изолирана

↗среда също така под докумен си има

↗и нещо друго на на предвид и това е че

↗fast api ако

↗отворите тяхното ре можете да видите че

↗там има абсолютно всичко те имат

↗страхотен сайт документацията е модерно

↗направена и така нататък казах и

↗асинхронност вече го споменах

↗а асинхронност нека пак да повторя знаем

↗че в python world ситуацията с

↗асинхронността не е чак толкова

↗лесна и не на последно място

↗а fast api има страхотна интеграция с

↗pantic ако някой от вас не е запознат

↗какво е патик пай данк е точно една

↗друга библиотека която подпомага

↗валидирането на данните тоест като

↗казвам данни тук имам предвид на

↗структурите от данни в python не някакви

↗input и output

↗файлове трябва това трябва да се има на

↗предвид тъй като знаем че python не е

↗чак толкова стро типизиран език както да

↗кажем примерно java или

↗csp нещата се случват малко по-различно

↗и съвсем накратко защо fast api защото

↗просто е бърз нещата се случват

↗светкавично бързо при

↗него извинете ме да си поговорим сега

↗какво са кукитата кукитата са много

↗малки текстови документчета файлчета

↗които се пазят на клиента какво имам

↗предвид под клиента сега не знам

↗аудиторията колко е запозната със сървър

↗и клиент тук под клиент се има на

↗предвид всеки един браузър който

↗ползваме като това може да е chrome ed и

↗така

↗нататък кукитата могат да бъдат няколко

↗вида в повечето случаи те са сесийни

↗кукита или постоянни кукита в идеалния

↗случай те са сесийни кукита тоест в тях

↗запазваме някаква информация която е за

↗текущата сесия тоест за текущия момент в

↗който ние работим и правим нещо с

↗определената апликация която е

↗създадена за какво друго могат да ни

↗служат кукитата за аутентикация разбира

↗се автентикацията е много ключово нещо

↗когато се опитваме да защитим нашите

↗сървъри по една или по друга форма

↗абсолютно винаги когато се опитваме да

↗направим нещо трябва да знаем кои сме

↗какво искаме какво правим и така нататък

↗тоест трябва да предоставяме

↗на клиентите ни

↗нужната

↗информация за да знае докъде има достъп

↗до нашия сървър нашата

↗а нашата апликация в кукитата интересно

↗нещо е че мога да се персонализира

↗информация какво имам предвид тук под

↗персонализиране и точно тук а става

↗въпрос за постоянните кукита представете

↗си че имате един уебсайт който може да

↗има светла може да има тъмна тема а може

↗да има м подреждане на някакви филтри

↗или сърч полета които са вътре тази

↗цялата информация може да се запази в

↗кукитата съвсем накратко кукитата са

↗навсякъде дори в към днешна дата ако

↗застанем заставам отварям примерно сайта

↗на софтуни

↗не знам защо ми излезна

↗а vuejs но отваряме сайта на soft

↗натискаме десен бутон отиваме в

↗апликации и виждаме че веднага сме

↗получили две кита едното ни е session id

↗другото ни е език който който език по by

↗default

↗е by default е български най-вероятно

↗това е постоянно куки което стои тук и

↗можем да си сепваме всеки път езикът за

↗този определен

↗уебсайт извинявам

↗се не очаквах че ще се върнем

↗е каква ни е крайната цел да направим

↗fast api cooky monster тоест да може

↗fast api да работи спокойно и вие да

↗работите спокойно извинявам се

↗да работите спокойно с кукита навсякъде

↗да създавате да триете да добавяте и

↗така

↗нататък да отидем и да видим какво е

↗автентикацията тъй като малко по-рано

↗споменах че има едно такова объркване

↗ако мога така да кажа сред хората каква

↗е разликата между атен акация и

↗оторизация

↗автентикацията съвсем накратко съм

↗подготвила едно страхотно меме за вас е

↗кой си ти какво

↗искаш тоест автентикацията предоставя

↗информация на нашия сървър кои сме ние а

↗като тази информация може да е имена

↗може да е телефон може да е имейл адрес

↗и така нататък а ауторизацията от своя

↗страна е мога ли да погледна някъде

↗тоест мога ли да имам достъп до някаква

↗част в нашия сървър като тази част може

↗да да е конкретен endpoint конкретен

↗пейдж или нещо от този сорт а знаете че

↗когато се създават апликации в повечето

↗случаи има админ page съответно точно

↗там е моментът на оторизацията

↗само админите които отново са юзъри имат

↗достъп до този админ

↗пейдж защо избрах google автентикация

↗аа

↗защото нека пак да

↗отворя google и ако отново ще ползвам за

↗пример сайта на

↗soft ако влезем в soft виждате ето тук

↗долу има едно бутонче google което

↗бутонче google какво означава означава

↗че ние можем да се логнем с google което

↗означава че не е нужно да имаме

↗допълнителна а допълнителна регистрация

↗да правим също така виждате че аз съм

↗създал няколко мемета ако отидем в меме

↗генератор първият който

↗намерим не даваме никакво съгласие

↗отиваме в логин и отново виждате че ето

↗тук отново има бутон

↗което е за google аутентикация точно

↗това е причината да изберем да избера

↗google аутентикация защото тя просто е

↗навсякъде в абсолютно всеки един сайт

↗модерен сайт можете да се автентикиран

↗с google тоест единственото което ви е

↗нужно да имате един

↗gmail натискате бутона и вие вече сте

↗автентикиран с google

↗нека сега да преминем към демото имайте

↗предвид че демото

↗а ще тоест подготвил съм съвсем мъничка

↗структура на проект

↗а това тук са git ign

↗и допълнителни файлове които е просто да

↗си сетъп на средата но имаме два три

↗файла в които три файла ще създадем

↗нашата апликация след това ще отидем в

↗google конзолата ще си създадем

↗ключовете и ще ви ще видите как всичко

↗това работи

↗заедно само

↗секунда първо да започнем оттам че за

↗fast api ни трябва просто да напишем

↗fast

↗api

↗[музика]

↗докумен отваряме fast api и ето тук я

↗има цялата информация за целия фрейм

↗уърк и ще видите абсолютно по-голямата

↗част от нещата които правим ще ги видите

↗тук как започва всеки един fast api

↗application той винаги започва с това да

↗се създаде нашия

↗апликейшън като конвенция въ fast api е

↗нашият application да се казва app който

↗е application само че а е хубаво да пише

↗на правилното място затварям си малко

↗нещата съответно създаваме си един app

↗който както можете се досетите се

↗казва fast

↗api като тук заставате и си добавяте

↗ир вече имаме готов application fast api

↗другото основно нещо което трябва да

↗направите само секунда тъй като имам

↗ключен койт

↗и се опитвам да го

↗изключа аха

↗аха

↗l супер така да не ни а разсейва

↗копай съответно имаме си

↗а вече създадения така казано

↗application след това какво правя аз

↗стандартно е винаги си казвам че ако

↗това ми е не

↗файла аз заставам и мога да ръна

↗апликацията

↗оттука това става със

↗стандартната name if name е равно на

↗main съответно за да можем да стартираме

↗всеки един fast api application на нас

↗ни е нужно да имаме ovc съответно си

↗добавяме

↗uic който става директно в импорти ир

↗uic

↗супер

↗създаваме казваме uic казваме му точка

↗има run нещо много готино след това

↗трябва да подадем кой апликейшън искаме

↗да стартираме съответно искаме да

↗подадем на кой порт да го стартираме в

↗случая тъй като аз съм в linux subsystem

↗ще използвам

↗127.01 съответно е много препоръчително

↗не е задължително но е препоръчително да

↗подадем и порта който е в случая аз ще

↗използвам

↗8000 супер следващото нещо което аз

↗всеки път когато създавам някакви fast

↗api

↗апликации правя е заставам казвам а

↗точка и почвам да създавам ратри които

↗искам да имам съответно първият ще ми е

↗get както казахме ние ще правим google

↗аутентикация съответно

↗ползвам името гин и забележете започвам

↗да правя

↗асинхронни

↗асинхронни

↗методи да подавам името на метода който

↗еги

↗или r както предпочитате и след това

↗просто пишем нашата логика какво правя

↗аз в повечето случаи предпочитам когато

↗се създават fast api апликации за мен е

↗много важно когато застана и погледна

↗ентите те да са възможно

↗най-малки

↗най-лесно най-лесни за четене съответно

↗да мога с един поглед да видя абсолютно

↗всичко съответно какво ще направя аз ще

↗кажа a и ще си направя един логин този

↗логин веднага мога да го

↗създам

↗в google aut

↗така само моя грешка извинявам се

↗и l съответно за момента казвам че това

↗ще е празен метод след мъничко ще ги

↗разписвам съответно какво правя добавям

↗си логина следващото нещо което е важно

↗когато правим каквато и да е

↗аутентикация

↗е важно да имаме callback какво

↗представлява

↗колбек представете си че вие искате

↗информация от даден сървър съответно

↗този

↗сървър изпраща отново куст към ваш

↗endpoint какво означава това ние когато

↗а поискаме аутентикация или някакъв

↗токън от google ние трябва да му

↗предоставим нашия endpoint към който той

↗да се обърне и да да ни даде нужната

↗информация тоест къде да ни върне нашия

↗толк като този а този

↗раут отново е

↗aut и стандартно си го кръщавам аз call

↗back така кръщаваме си го callback

↗съответно както видяхте

↗заставам давам му име

↗out и отново си

↗създавам директно

↗връщам и този out call отново отивам в

↗google оставиме asing

↗def даваме

↗името и даваме пас след мъничко ще ги

↗имплементираме и точно тези ен пойти

↗имайте предвид че тук сега има нещо

↗много важно което не трябва да

↗пропускаме когато получаваме колбек

↗абсолютно винаги ние трябва да получим

↗рикуеста тоест рикуеста откъде е дошъл

↗а този колбек съответно как се случват

↗нещата във fast api пишеме си даваме си

↗име на

↗променлива и съответно този както казах

↗по-рано f api работи супер с типова от

↗данни и

↗е аз препоръчвам

↗да казвате какъв тип са тези

↗данни в случая ще

↗кажем този куст а може да е от или от

↗starlet или от fast api имайте предвид

↗че рекуести в fast api той е изцяло

↗базиран на starlet така че в случая аз

↗ще използвам

↗starlet съответно за да можем да

↗направим демото по

↗а та да кажа по-реалистично ще ни трябва

↗и да имаме така казано един

↗секнат end който ще е

↗про и този protected отново ще

↗е

↗[музика]

↗protected

↗r който ще трябва да

↗получаваме информация да кажем за

↗текущия user както казах няма да правим

↗прекалено сложна апликация ще направим

↗изцяло базова апликация просто да видим

↗как работят нещата и какво е нужно да

↗направим съответно давам си име на

↗променливата current user който current

↗user ще

↗нва това отново е клас в

↗а fast api който ще нва на някакъв метод

↗който ние ще създадем а

↗да кажем че той ще

↗е c user примерно нещо от този

↗сорт съответно какво правим отново

↗правим и тук си правим един

↗c

↗user супер този cent user както знаете

↗щом имаме сесия щом имаме различни

↗кусти на нас ни е нужно тоест на нас ни

↗е нужно да знаем точно от кой куст

↗откъде е дошло това цялото нещо

↗съответно ето тук ще направим един куст

↗две точки

↗request ще си го и почнем отново това

↗цялото нещо както казахме ползваме

↗нещата от starlet и след мъничко ще

↗започнем да имплементираме всички тези

↗метод които сме създали към този момент

↗съответно а само поглед но как ми се

↗казваше метода current user нека да

↗бъде get current user супер така

↗подаваме си нашия get current user на

↗нашия

↗метод

↗и просто ще върнем информацията

↗r за кън

↗юзъра тоест какво ще направя тук ту ще

↗си сложа една документаци ика да не

↗забравя след мъничко а

↗[аплодисменти]

↗супер какво имаме към този момент имаме

↗съвсем базова логика която ни създаде

↗няколко раут които не са извикват в себе

↗си няколко метода

↗и можем да се логнем на теория все още

↗не можем можем да получим тоя укн на

↗теория все още не можем и имаме

↗protected

↗ъри съответно щом можем да сепваме и да

↗правим някакви неща нека да имаме един

↗endpoint който да е просто

↗а имайте м предвид че правя просто get

↗по-лесно е за обяснение поне според мен

↗а тук имаме non

↗protected който този м protected sing

↗dev

↗само да смъкнем малко тази конзолка

↗така тук просто ще

↗върнем един

↗ли и тук ще

↗[музика]

↗имаме супер така

↗можем да се логнем можем да си вземем

↗къна можем да проверим дали сме

↗автентикиран или не както трябва а можем

↗да извършваме действия ако не сме

↗автентикиран

↗остана ни и само му да можем да се

↗гаутмрт ще ни

↗е съответно

↗гау супер

↗в този logout

↗отново log

↗r който щене информацията

↗от супер както казахме отиваме в google

↗aut и си правим

↗[музика]

↗един df

↗co и отново пасваме само че това защо ни

↗няма няма

↗usage все още не знаем защо няма us

↗добре отиваме импортва

↗сита и имаме абсолютно всичко сега ако

↗застанете и просто стартирате

↗апликацията има имам предвид че

↗към текущия момент все още не сме

↗имплементирали нищо но ако отидем в

↗local host въ fast api ключовото е че

↗сла страниците не са в наклонена черта

↗сгр това може да бъде конфигурирано но

↗те са в наклонена черта dox и виждате че

↗супер бързо без абсолютно никакви усилия

↗само тук съм забравил една наклонена

↗черта супер бързо без абсолютно никакви

↗усилия ние имаме вече създадени пет

↗нпота и те

↗работят точно това е причината защо fast

↗api се използва масово и набира такава

↗скорост видяхте че буквално какво

↗направих създадох си едно файлче в в

↗което нека да минем отново ключовите

↗неща които съм направил е създал съм

↗казал съм че това е fast api апликация

↗създал съм 1 2 3 4 пе раут и съм казал

↗просто тази апликация да се ръна и аз

↗имам готов работещ

↗бекенд и мога да правя съвсем различни

↗неща така да продължим аа откъде ще

↗продължим нека да бъде директно с google

↗автентикацията първо ще имплементираме

↗абсолютно всичко а след това ще застана

↗и ще конфигурирам в google cloud

↗конзолата това което е нужно за да може

↗наистина нашия апликейшън да работи с

↗реални

↗данни какво трябва да

↗направим нашият логин има нещо много

↗важно трябва да подадем към

↗google да направим куст директно към

↗google извинявам

↗се какво представлява този куст аз си

↗правя една променлива google out url

↗който този out url и сега тука е

↗ключовото на нещата които трябва да

↗съдържа малко е грозно цялото нещо но но

↗имаме

↗https просто съм писал прекалено много

↗аутентикация и затова горедолу ги знам

↗нещата на изс ако не проработи ще ме

↗извините ще проверим в интернет точно

↗как са лите та имаме а https имаме acc

↗accounts имаме

↗google.com след това имаме all имаме o

↗out o out д защото всичките ни

↗аутентикация които ще правим са с o

↗2 версия втора и казваме че искаме да се

↗автентикиран

↗какво е това

↗мястото където ще искаме информация

↗каква информация и за какво версия 2 е

↗горе-долу новичка версия ако мога така

↗да каже

↗съответно след това продължаваме а

↗трябва да кажем какво какъв респонс type

↗искаме съответно пишем resp type имайте

↗и предвид че това е нещото което на мен

↗не ми допада и абсолютно винаги съм го

↗казвал на хора с които съм работил не ми

↗харесва да се работи със стрингове

↗защото в момента виждате пише някакъв

↗много дълъг стринг

↗и ако допусна някакво малко тапо след

↗това това цялото нещо няма дебъгване

↗няма откриване та да се надяваме че няма

↗да има проблем казваме че типът който

↗искаме е resp type код след това казваме

↗cli id което ще трябва да си го вземем

↗от

↗google за момента тук ще

↗сложа

↗дами съответно като имаме client id то

↗друга допълнителна информация в кото

↗която трябва проде да подадем е

↗red url съответно този red url

↗опс отново към текущия момент ще го

↗оставя дами и последното нещо което

↗искаме е каква информация искаме за този

↗user

↗а тоест ние от google можем не само да

↗взимаме имейл адрес имена телефонни

↗номера има и сензитивна

↗информация

↗но за примера който правим в момента ние

↗няма да ползваме никаква сензитивна

↗информация причината за това е че когато

↗ползваме малко по-сензитивни информация

↗от google ни трябва да нашия апликейшън

↗да бъде верифициран от google което

↗какво означава трябва да се подаде куест

↗да се изчака малко малко в зависимост от

↗времето на одобрение което може да

↗варира от три дни доколкото знам до

↗няколко месеца затова ние ползваме

↗най-базовата а аутентикация

↗тоест най-базовата информация а без

↗абсолютно никаква сензитивна информация

↗която ще е в scope този scope

↗е open id

↗съответно в това open id ние имаме

↗имей

↗и

↗имаме това тук е

↗space просто кое параметрите са така

↗искаме имейл и искаме профил което какво

↗означава искаме да знаем имейла искаме

↗да знаем профилната снимка на нашия

↗потребител които както знаете те са

↗публични за

↗абсолютно всички тоест ако смятате че

↗когато сте качили някаква информация в

↗google снимки а тя е лично ваша не е

↗точно такава

↗ситуацията супер създадохме си нашия url

↗да се надяваме малко по-късно ще

↗разберем въобще дали ще проработи този

↗url след като го създадем какво е нужно

↗да направим да създадем един

↗рек нс което какво означава това прави

↗просто един кол към този url който имаме

↗тук съответно тук просто слагаме google

↗authentication url

↗опс извинявам се това

↗тук трябва не трябва да е jon object

↗може да подадем тю

↗палче супер вече имаме това нещо

↗а

↗съответно трябва

↗да се прехвърлим да си вземем

↗client id то и трябва да си вземем

↗redirect url как се случват тези

↗неща ще си запазя той ще си пусна отново

↗апликацията за да ви покажа нещо много

↗полезно поне за мен заставяме отиваме в

↗а google

↗конзолата отваряме си google cloud

↗конзолата аз имам

↗някакъв създаден project

↗съответно си създавам нов про даваме си

↗някакво супер якото име на

↗проекта супер хипер co project и

↗натискаме след когато след като се е

↗създал изчакваме съвсем мъничко да се

↗създаде ето тук виждате вече е създаден

↗натискаме select project

↗идваме в navigation менюто и тук много

↗внимателно какво правим от pin pin

↗products отиваме в api and service оттук

↗отиваме в

↗authentication и избираме третото

↗изчакваме съвсем мъничко и започваме да

↗си създаваме нашият апликейшън в google

↗както знаете а когато създаваме някакви

↗апликейшъни ние не ги създаваме просто

↗да ги ползваме лично ние си понякога го

↗правим но в повечето случая го създаваме

↗да бъдат публични и да могат много хора

↗да ги ползват съответно какво е нужно да

↗направим от

↗ao от този скрийн

↗тук трябва да изберем че това ще е

↗external

↗апликаций натискаме create

↗даваме имейл на нашия

↗алий

↗отново

↗супер супер

↗хипер co

↗application избираме си нашия имейл

↗адрес скролваме най-до долу и си

↗създаваме и добавяме верските контакти

↗които в повечето случа че ще сме отново

↗ние пишем си отново

↗имейла

↗тини така натискаме save and continue

↗изчакваме съвсем малко както казах ние

↗ще ползваме

↗най-базовите най-базовата аутентикация

↗тоест няма да добавяме абсолютно никаква

↗сензитивна информация което какво

↗означава тук не правим нищо ако искаме

↗да добавим някаква сензитивна

↗информация натискаме add or remove и тук

↗вече можете да видите каква информация

↗можем да имаме имейл адреси се

↗виждат

↗по-конкретна информация за нашия профил

↗cloud платформи и така нататък както

↗казах ние работим с най-базовата

↗информация тъй като нямаме просто

↗времето няма ни стигне за да ни одобрят

↗application натискаме save and

↗continue test user няма да добавям аз

↗абсолютно никакви тест юзъри тъй като аз

↗съм си тест юъ аз съм си

↗девелопъра натискам save виждам сарито

↗какво

↗виждаме виждаме нашето име на

↗апликейшъна super hyper cool application

↗и абсолютно всичко се е създало

↗съответно какво трябва да направим сега

↗да се върнем към дашборд съответно

↗избираме

↗от дясната част полето credentials

↗отваряме

↗credentials и както казах ние работим

↗с client id съответно какво трябва да

↗направим да изберем credentials a

↗to client id избираме го избираме каква

↗е нашата апликация както казахме нашата

↗апликация е web апликация как разбираме

↗че е web апликация ние тук сме писали

↗само backend но това е нашия frontend

↗тоест сла страницата си е

↗frontend съответно оттук избираме web

↗апликация не е нужно да добавяме

↗абсолютно нищо освен нашето много готино

↗име super hyper cool application

↗и единственото нещо което ни е нужно е

↗да имаме authorization redirect url кой

↗е този authorization redirect url това е

↗нашият callback как да знаем какво да

↗добавим тук отваряме си sler точно

↗затова казах че няма да го затварям

↗отварям

↗callback натискам tryout натискам

↗execute тъй като не е имплементирано

↗нищо получавам no response но ето тук в

↗request url аз имам нашия url съответно

↗какво правя идвам тук натискам copy

↗копирам си го идвам тук и си поставям

↗request

↗url след това натискам create след като

↗натисна create и се появяват нещата от

↗които аз имам нужда имам client id

↗копирам си това client id заставам и

↗идваме ето тук където казах че ще е дами

↗поставям си cent

↗id до тук

↗е

↗red url разбрахме кой е ето този тук

↗имайте им предвид че информацията трябва

↗да е

↗точно такава каквато сме подали защото в

↗противен случай нашият апликейшън може

↗да каже url примерно което какво

↗означава че стите които се изпращат от

↗бекенда към google те не съответстват

↗тоест има някъде разминаване подавам си

↗го това нещо съответно виждате тук че

↗малко се скъса извинявам се че точно

↗така се вижда

↗така имам client id

↗то scope

↗redirect

↗добре добре сега какво ще направя ще

↗застана и ще си запазя информацията ето

↗тук тоест тук ще

↗имам

↗r защото малко по-надолу ще трябва да ги

↗ползвам

↗отново имам r url и

↗имам client

↗id взимам си client id

↗цак имам и

↗c secr

↗взимам си и sec и си го поставям

↗тук съответно сега тук ще ползвам един f

↗string да

↗стана малко

↗по-четим id то започва от тук до тук и

↗тук ще

↗кажа qu

↗id тук ще кажа

↗redirect url

↗страхотно

↗добре вече имаме създадени нещата да

↗видим дали можем да се логнем

↗най-вероятно в момента ще получим грешка

↗тъй като колбек няма абсолютно никаква

↗имплементация ето тук може да видите но

↗все пак да видим дали нещо ще проработи

↗как се случват нещата когато тръгнем да

↗правим рекуести с google аутентикация

↗абсолютно всеки път ще виждате тази

↗грешка защо защото когато се

↗автентикиран

↗куста по този начин какво трябва да

↗направим трябва да си вземем url чето да

↗отиваме в

↗логин и както видяхте получихме redirect

↗url miss match

↗съответно това означава че някъде сме

↗объркали

↗нещо нека само малко да подредим кода

↗така влизаме ето тук имаме client id то

↗след имаме client

↗id

↗resp type така така

↗така имаме client id след това

↗red

↗url така имаме и

↗скоуп само да проверим дали съм поставил

↗абсолютно правилното нещо

↗добре спрях апликацията я пуснах наново

↗тъй като

↗имплементирахме а мима което ще го

↗погледнем след мъничко защо защо се

↗получава така

↗аа а нека да продължим

↗на

↗нататък така тука имаме https имаме resp

↗call type така така така така така така

↗така така така така

↗добре ще го фиксне след съвсем мъничко

↗ако не успеем имаме и back вариант така

↗че не се

↗притеснявайте който беп вариант е както

↗знае

↗всеки един си има ето такова нещо което

↗може да види каква му е историята

↗съответно аз преди това си бях

↗имплементирал тоест какво ще направя аз

↗идвам тук копирам си ей това нещичко и

↗само тук сега ще си плесна с моята нужна

↗информация която каква

↗е id и

↗call и ако спрем и пуснем нашия

↗алиш ще видим какво ще се

↗случи виждате явно съм бил допуснал

↗някъде някакво мъничко тапо затова

↗а какво препоръчвам аз всеки път

↗абсолютно всеки път когато се създаде

↗ето такова нещо нещо такъв кол дори ако

↗имате желание ще ви го изпратя в git а

↗github примерно можете директно си го

↗копирате и си го ползвате на новото

↗място тъй като ако пишете абсолютно

↗всичко from scratch шансът да допуснете

↗някаква грешка е голям както виждате

↗натиснах логин виждате моето име моят

↗имейл адрес натискам окей съгласявам се

↗и получавам от колбе no както видяхте

↗нашият колбек тук който го екзек преди

↗мъничко отново ни дава информация no

↗тоест нашият логин

↗работи след съвсем мъничко ще го

↗верифицираме отново спирам на

↗апликейшъна тъй като трябва да си

↗имплементираме нашия

↗callback което е ключово и основно нещо

↗за нашата аутентикация това е мястото в

↗което ние ще закачим кукита и ще

↗а работим с тях съответно както казах на

↗нас ни трябва

↗куеста добавяме си отново куеста който

↗[музика]

↗имаме съответно този куст от този куест

↗ние трябва да си вземем кода на куеста

↗пишеме request от него взимаме от quy

↗параметрите казваме get дай ми кода

↗просто така работи google праща едно

↗нещо което е код в quy параметрите кое

↗са quy параметрите

↗ето тук горе цак това са ри параметрите

↗съответно ако го нямаме този код

↗само

↗секунда ако го нямаме този код какво

↗правим директно казваме ваме някакъв еш

↗и казваме че няма начин да се антикира

↗тоест е направен от някакво друго място

↗http само да си го

↗ирна виждате и fast api което

↗предпочитате принципно е препоръчително

↗да сте консистентни аз започнах със stl

↗затова ще продължа да ползвам stl

↗съответно какво ще направя тук

↗а ще сетна статус код който статус код

↗ще

↗е status

↗то http

↗ще http b request и препоръчително

↗абсолютно всеки път да подавате детайли

↗защо

↗е съответно в случая аз ще кажа че

↗[музика]

↗или

↗супер добре трябва от stl re няма да

↗работи тъй като на него не можем да

↗подадем детейли съответно ще използваме

↗f api cool така продължаваме

↗нататък

↗съответно ако пък го имаме код какво

↗трябва да направим трябва да

↗създадем url какъв е този url отново той

↗е към

↗ето това

↗място само

↗че излагах ви много сериозно не е към

↗това място то url се взима от

↗google.com на на

↗черта

↗супер взимаме си url съответно трябва да

↗си направим нашия тон който е

↗dat вижда

↗се така който какво

↗е подаваме си

↗кода подаваме си

↗тук client id то който си го създадохме

↗малко по-отгоре подаваме

↗си

↗secr тук пропуснах една запетайка

↗подаваме си c secr

↗супер след това си подаваме

↗и

↗r

↗url който red url е този

↗тук ето

↗този ползвам го този

↗тук добре нека да го направим ето

↗така

↗така тука имаме

↗r url съответно след като вече имаме

↗кода имаме client id имаме client secret

↗имаме red url трябва да кажем с какъв

↗какъв тип на автентикация искаме

↗съответно трябва да кажем

↗grand

↗type че ние

↗[музика]

↗ae супер

↗когато сме създали наш нашия data какво

↗остава остава само и единствено да

↗направим към google как става

↗това и използваме асинхронния клиент

↗който асинхронен клиент не е само за за

↗f api а е за абсолютно

↗всички за целия py тоест можете да си го

↗алю

↗навсякъде създаваме си нашия клиент

↗съответно след като сме си създали

↗клиента трябва да направим и си запазвам

↗информацията за ра в е променлива

↗us нс

↗съответно досещате се че правим един a

↗client тъй като е асинхронно al client а

↗и тук правим get

↗подаваме

↗аа не тук не е get извинявам се че ви

↗подведох тук е пост съответно тук

↗подаваме to url

↗който който имаме и подаваме и дейта

↗която имаме която дейта в нашия случай е

↗както знаете тон дета която създадохме

↗малко

↗по-раничко

↗това даже тук не е user а е to tok resp

↗да не бъркаме нещата само секунда

↗съответно какво трябва да направим сега

↗е да кажем на

↗нашия да ни ресне статуса който е

↗получил съответно след като получим този

↗статус трябва да вземем цялото

↗бо j имайте предвид че сме към края

↗тоест не остава още много така

↗че надявам се да не съм

↗ви

↗утежнил към този момент така

↗имаме и казваме просто че си взимаме

↗този j съответно сега тук много важно

↗нещо е да проверим дали има някакви

↗грешки в този н ако има грешки

↗if

↗и

↗j просто трябва

↗данем отново някакъв еш

↗този път само ето така

↗щена супер ако няма трябва да си вземе

↗acc който ни е от

↗google тоест

↗взимаме който

↗е су след като сме го взели можем да

↗вземаме user

↗info

↗url user info url той си е съвсем

↗стандартен

↗който е от google

↗ap

↗опс копирам си го това нещо слагаме ето

↗тук http ps така google apps и тука

↗имаме all out

↗2 този път ползваме версия 3 и искаме

↗user info

↗а user info точно

↗така така след като вече сме взели

↗абсолютно всичко подго имаме вече токана

↗подготвили сме накъде ще правим рикуеста

↗остава само да направим самия ст но за

↗да го направим трябва да се антикира

↗вече към google което как

↗става взимаме създаваме си едни хедри

↗това е съвсем стандартно създаване на

↗хедъри което си

↗е

↗aut казваме че това нещо

↗е

↗тонче и

↗acc какво се получи имаме хедърите имаме

↗и място към което трябва да направим ку

↗което какво означава единствено че

↗трябва да направим

↗куста който ще ето това

↗нещо взимаме си отново

↗клиента и вече имаме us

↗inf както преди мъничко правим си един a

↗само че забележете че тук вече имаме

↗пост а имаме get преди мъничко имахме

↗пост user info url и подаваме хедърите

↗които

↗имаме ето тези хедъри които сме създали

↗съответно вече когато имаме абсолютно

↗всичко това какво казахме че трябва да

↗изчакаме за статуса имаме тока а имаме

↗user inf response

↗точ чакаме си за статусчета

↗и вече имаме официалния user info който

↗user info какво ще ни е user info

↗response

↗jason да погледнем отново какво имаме

↗имаме си кода имаме си лите първо s

↗антикира към google след това ако всичко

↗е както трябва продължаваме нататъка

↗получаваме си access антикира се и

↗взимаме user информацията за нашия user

↗защото какво казахме че ето това тук ще

↗ни върне просто

↗ън user съответно сега правим следващата

↗проверка отново ако ей това нещо

↗така ще си го копирам тъй като времето

↗мъничко напредва тук имаме user info ако

↗има грешка казваме b request имайте

↗предвид че тук можете да добавите доста

↗по допълнителна информация отколкото

↗да просто връщате bet request хубаво е

↗да кажете защо е b request и така

↗нататък но просто тъй като времето ми

↗притиска ще го направ

↗по този начин така продължаваме нататъка

↗имаме трябва да си добавим нещо което е

↗много ключово което е трябва да можем да

↗си създадем нашия

↗токън jwt

↗tok а в

↗кон освен това ще направя и нещо от

↗сорта на

↗[аплодисменти]

↗create access

↗to

↗[аплодисменти]

↗супер и тук

↗имаме съответно имаме ще си направя

↗копие на дета за да не я загубим поради

↗някаква причина съответно всеки път

↗когато правим кита е хубаво да имаме

↗съответно

↗expire и си правим

↗[аплодисменти]

↗daytime day

↗time

↗плюс та делта

↗като тука е хубаво да кажем колко време

↗ни трябва да ане ток

↗access tok

↗expire ще кажем една съответно ето тук

↗казваме

↗ц и казваме access tok expire

↗към нашия тод какво ще направим ще

↗ъпдейтнем и ще добавим

↗expire нашия expire който сме

↗направили съответно сега вече ще енем

↗това цялото

↗нещо jwt

↗което ще

↗е което ще е o

↗jwt

↗j jw супер ще кажем

↗encode подаваме encode и ни трябва

↗някакъв secret с който да

↗антикира да енем нашия ток тук ще си

↗направя secret

↗key

↗super secret

↗key и тук подавам secret kia и е много

↗важно да кажем с какъв алгоритъм а

↗съответно аз

↗абсолютно всеки път ползвам един и същи

↗а който

↗е ша 250

↗тъй като се води един от

↗най-сигурните съответно накрая ще върнем

↗нашия тон който имаме идваме тук а и

↗просто си

↗извикаме

↗нашия така импортна се имаме cre и

↗просто трябва да дадем татата която

↗каква е

↗нашия

↗us и това ще ни създаде токън с user

↗информацията тъй като какво казахме ето

↗тук ще получим цялата информация за

↗юзъра и просто ще добавим и expire date

↗съответно тъй като вече имаме къна

↗създаваме си един

↗респонс който отново ще редик resp и

↗този път ще редиректва към нашата лагер

↗страничка ще се върнем ето тук

↗и на нашия респонс е много важно да му

↗добавим кукито което сме създали и

↗трябва да му дадем име на кукито което

↗access в моя случай ще е access токън

↗подавам му стойност на кукито което е

↗вече създадения токън

↗и дали искам да е http only в случая ще

↗кажа

↗true

↗съответно ще върна този

↗респонс супер нека да видим сега какво

↗ще се случи спряхме вече имаме

↗автентикацията единственото нещо което

↗ни остана е да направим логата но нека

↗да видим дали всичко което сме направили

↗към този момент работи както трябва

↗логваме

↗се виждате това е името на нашия

↗application super hyper cool application

↗натискаме continue и имаме internal св е

↗rar окей нашият

↗callback

↗очаква request което е

↗нормално а ние сме пропуснали да го

↗добавим съответно спираме от

↗отново идваме копирам си го пак тъй като

↗копирах преди мъничко логвам се

↗отново hyper cool апликацията и отново

↗имаме

↗eror и този път грешката

↗е cli

↗окей имаме c eror нека да погледнем

↗отново

↗какво къде ни казва че е грешката имайте

↗предвид че това е изцяло нормално не

↗всеки път от първия път да успяваме да

↗създадем нашата аутентикация

↗и това е just fine така виждаме че ето

↗тук

↗ето на този пост тук получаваме

↗грешката защо получаваме

↗грешката

↗https

↗google

↗апи

↗то

↗добре google apis

↗след това имаме client - то нека да го

↗бъгнем защо защо да се затормозяваме

↗когато можем да да бъгнем нашия

↗код така идваме

↗тук даваме

↗[музика]

↗continue google app

↗tok имаме client id то имаме

↗имаме ай

↗кода

↗получаваме

↗аха missing

↗парамет супер съответно това какво

↗означава че имаме ty понякъде

↗което е

↗рек юри аз съм написал url

↗страхотно нека отново да пуснем директно

↗в бик

↗аа и да изпълним

↗рикуеста изчакваме да ударихме брей

↗по страхотно получи се получихме статус

↗код 200

↗имаме access ток да видим

↗този дали ще проработи и казваме not

↗found защо имаме not

↗found в

↗момента трябва да видим какво има в user

↗а заставаме

↗имаме access to и имаме

↗google google app

↗user

↗authorization

↗tok

↗autor който ни е access отгоре имаме

↗access to

↗https само секунда да помисля извинявам

↗се понякога когато трябва да пишем код

↗from

↗scratch по време на презентация се

↗случват такива неща но това е изцяло

↗нормално така а

↗съответно user info

↗google apis all out to

↗2 имаме

↗[музика]

↗отново казвам че ако не успея в

↗следващите 30 секунди да открием да

↗открием грешката отново ще си извадим

↗малкото пищовче което

↗имаме отново получаваме едноф съответно

↗както казах имам ето това пищовче което

↗е супер и ще можем да видим каква е била

↗грешката дали е отново е някакво

↗тапо което е изцяло нормално да

↗получаваме такива грешки съответно това

↗ни е историята така така така така

↗така точно

↗така идваме ето тук а

↗та само че единственото което ще ще го

↗кръстим

↗user ще го кме us ио

↗супер нека да видим сега какво ще се

↗получи имайте предвид чеку си продължава

↗затова първото нещо което получаваме тук

↗е грека тъй като той трябва да се до

↗доизпълни

↗окей казва ни че в момента алгоритъма ни

↗е

↗а грешен защото не може да е ша

↗256 просто забравих че ша 256 е sh

↗256 спираме отново тоест при мъничко

↗бяхме допуснали отново typ което е

↗изцяло нормално и виждате че ре директна

↗нека да погледнем сега какво какво точно

↗се

↗случва тоест ако дойдем ето тук и отидем

↗в application имаме access

↗ток супер получихме вече access ток

↗тоест какво остава да направим трябва да

↗си имплементираме get c user защо трябва

↗да го

↗имплементираме за да можем да вземем

↗някаква информация за защото ако дойда

↗ето тук и го изпълня това получавам

↗n но преди да направим каквото и да е ще

↗ни трябва да деко днем ток на който

↗имаме как се случва това а правим си

↗един декор

↗de access

↗tok съответно той ще получи и

↗който е

↗сн

↗съответно все след като го вземем

↗единственото нещо което трябва да

↗направим да кажем jwt

↗декони този

↗токън с този secret който съм създал и с

↗алгоритъма който

↗имам това е абсолютно всичко което

↗трябва да се

↗направи съответно

↗заставам записката ми напомня че трябва

↗да взема н us което е супер

↗опс

↗съжалявам приемаме го това цялото нещо

↗съответно взимаме си нашия ъ как можем

↗да намерим нашия ър е от ку

↗както казахме има ке и мога да взема get

↗как се казва нашия

↗ток

↗acc отново да не се получи някакво ty

↗отивам копирам си го поставям си и вече

↗имам информацията за ра ако го няма този

↗user

↗а съответно ще резнем някакъв

↗еш който

↗exception ще

↗http

↗exception и отново тук ще вземем статуса

↗статус от stl и ще кажем

↗unut

↗супер в противен случай ако пък

↗го имаме тона какво трябва да направим

↗трябва да си денем тона и да върнем тази

↗информация

↗us

↗information какво правим казваме thee

↗access to и си подаваме нашия us който

↗имаме съответно какво правим ваме просто

↗нашия

↗user information

↗dec нека да видим сега дали ще работи

↗все още сме логнати все още имаме токана

↗въпреки че най-вероятно вече е

↗изтекъл да виждате че е expire тъй като

↗какво казахме тук че ще е валиден една

↗минута нека да го направим 10 минути за

↗да бъде полесно за тестване отиваме

↗отново вги

↗копирам си го ей това цялото нещо

↗заставам

↗тук

↗сините идвам тук

↗казвам се логвам тъй като вече един път

↗съм се логнал не ми поиска нли и

↗получавам

↗access съответно в момента ако отивам в

↗protect го това и виждате цялата

↗информация за

↗ме име ли сега тук фамилията е същата

↗тъй като не съм я въвел

↗а съответно и моя снимка ако отворите на

↗този имейл снимката ми е просто к което

↗е нормално и виждаме кога ейва всичко е

↗страхотно до момента в който искаме да

↗се

↗гаутмрт ветно просто просто трябва в

↗момента да си имплементираме и логата

↗това може би е най-лесното от абсолютно

↗всички неща и то

↗е създаваме си отново респонса

↗респонс който ще искам да е дирек resp

↗отново ще искам да е

↗към този

↗url съответно казвам на респонса delete

↗ook и тук подаваме нашето куки access to

↗и казваме r

↗return

↗resp

↗страхотно нека да погледнем имаме ли все

↗още куки имаме си кукито то не е изтекло

↗ако дойда

↗тук само малко да си смаля екрана така

↗ако дойда тук информация за мен тъй като

↗съм локнат non protected би трябвало да

↗ми даде current daytime now точно така

↗охо малко по-дълго продължи лекцията

↗съжалявам и сега ако изпълня

↗lout не

↗съм спрял сървър и сега ако

↗изпълним просто ме редиректва там където

↗трябва това е пейдж тоест нека сега да

↗погледнем отново да видим каква е

↗ситуацията ще ги отварям ето тук в

↗браузъра protected имаме current

↗daytime ако се опитам да отворя

↗protected

↗unut което е точно това което

↗очакваме ако тръгне се

↗логвам ме редиректва към

↗а моята ср

↗страничка execute отваряме

↗protected цялата информация която е за

↗мен

↗и остана да направим и

↗lout ако го енем тук би трябвало да ме

↗пренасочи директно към лагер

↗страницата точно така в момента ако се

↗опитам отново да изпълня protected би

↗трябвало вече кукито да е

↗изтрито виждате че

↗изтрито супер надявам се все още да има

↗някой тук да не си говоря сам аа съвсем

↗накратко последни финални думи да самари

↗ирам какво направихме какво не

↗направихме защо така се получи и така

↗нататък започваме оттам

↗а имаме fast api минималистична

↗апликация която има login

↗callback protected url който нва на

↗някакъв user който get current user

↗какво прави да погледнем отново взима

↗access to декодира access to и връща

↗информация за user като в access tok

↗можем да добавяме всякаква друга

↗информация

↗а имаме non protected просто random url

↗и имаме logout интересното което е какво

↗направихме в

↗конфигурацията взехме redirect url

↗client id и client secret видяхме че ето

↗тук не е хубаво да пишем нещата from

↗scratch защото можем да допуснем typo в

↗случая и в двата случая когато ползвахме

↗жокер е бе че ето тук е rir uri а не url

↗аз на и двата пъти бях написал

↗url случват се такива неща логин какво

↗прави изпраща куст към google съответно

↗google получава нашия request и google

↗се обръща към нашия endpoint който е

↗callback съответно какво се случва в

↗нашия колбек

↗а това което се случва е взимаме кода от

↗рито след това

↗създаваме един токън

↗ето ето тук правим post request към

↗google google apis token с информацията

↗която искаме за да се оторизираме пред

↗тях

↗получаваме отговора взимаме си вече

↗получения токън чрез access тона и в

↗зависимост какви креден и какви скопо

↗имаме тъй като ние не конфигурирах

↗абсолютно никакви скопо защото просто е

↗нужно време за да бъдат

↗одобрени застанахме и се

↗оторизираме с access токана който

↗имаме съответно изпращаме още един куст

↗към user info url с aut тона който имаме

↗и получаваме цялата информация за нашия

↗user и единственото което имаме последно

↗е

↗lout и последно нещо какво направихме в

↗google cloud конзолата след като сме си

↗създали нашия апликейшън избрахме ето

↗тук да бъде external за да могат

↗абсолютно всички хора да го ползват не

↗сме сетва абсолютно нищо след това в

↗credentials създадохме нови нли с all

↗out client id където избрахме уб

↗апликация дадохме име на нашата уб

↗апликация и предоставихме просто url за

↗нашия

↗callback това е всичко което направихме

↗а съвсем накратко това

↗е цялата презентация която исках да ви

↗предоставя надявам се да да ви е била

↗интересна а надявам се да сте научили

↗нещо ново и сега остава да погледнем

↗само в слайда дали имаме някакви въпроси

↗това е много хубав въпрос а така

↗а ако може две думи за auto да кажем

↗auto това е по-се начин за аутентикация

↗в нашия в нашия код

↗а тоест имаме няколко вида на

↗аутентикация можем да се автентикиран

↗някакви токни ключове във бодита можем

↗да се автентикиран

↗оа а което разликата с ото е че ако

↗а тоест не получаваме колбек те не си

↗комуникират то тогава цялата дискусия е

↗едно едностранна тоест от сървъра към

↗клиента въпросът е дали а кодът ще

↗работи ако методите не бяха asn да кодът

↗ще работи ако методите не са си можем

↗дори в момента да го направим

↗а нека да започнем с

↗ето

↗това просто ще има едно много готино

↗забавяне което

↗е

↗така така details

↗видях втория коментар в exception

↗details без така пише в документацията

↗супер

↗благодаря не мога да го махна

↗благодаря

↗а така така така

↗така само че трябва да променим клиента

↗тоест да ще работи а ако не е асинхронно

↗нека ще направим само една малка част

↗а ето

↗това това няма да го айва колбек и

↗логина и код кодът ще си работи но

↗просто ще имаме едно огромно забавяне в

↗в рекуести и ако има някакво забавяне в

↗google това може да ни рейзне целият

↗апликейшън

↗супер ще оставя още две-три

↗минутки за въпроси нека да бъде ще пусна

↗един

↗таймер или нека нека да бъде до

↗без без 20 или без 25 до без 25 ако

↗нямаме още въпроси

↗ще приключим лекцията тук надявам се да

↗ви е била интересна отново казвам

↗надявам се да сте научили нещо ново

↗надявам се

↗да сте обогатили знанията си

↗през това време докато чакаме

↗а по-конкретно да видим разликата о

↗срещу

↗all ето тук можете да видите абсолютно а

↗цялата

↗разлика ето както казах

↗ото е малко пок и е едностранен

↗едностранна аутентикация което

↗при по-сериозни по-големи апликации може

↗да доведе до някакъв пробив в системата

↗а ако погледнем кога е създаден

↗а той вече е доста старичък

↗2012 имайте им предвид че a в повечето

↗случаи в production апликации работи

↗ръка за ръка с

↗аа

↗https

↗супер виждам че няма повече

↗въпроси затова отново искам да благодаря

↗на хората които са останали

↗докрая и желая ви лека и спокойна вечер

↗довиждане от мене чао чао

← Всички лекции