[{"data":1,"prerenderedAt":386},["ShallowReactive",2],{"docs:doc:\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki":3,"docs:pages:docs_pl":324},{"id":4,"title":5,"alt":6,"body":7,"description":313,"extension":314,"key":315,"meta":316,"navigation":317,"order":318,"path":319,"placeholder":320,"seo":321,"stem":322,"__hash__":323},"docs_pl\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Findex.md","Szybki start dla frameworków","\u002Fen\u002Fdocs\u002Fguides\u002Fquickstarts",{"type":8,"value":9,"toc":305},"minimark",[10,41,44,96,101,104,156,172,183,190,233,239,249,256,277,291,295],[11,12,15],"callout",{"title":13,"type":14},"Paczek nie ma jeszcze w repozytoriach","warning",[16,17,18,19,23,24,27,28,31,32,35,36,40],"p",{},"Każde SDK jest w wersji ",[20,21,22],"code",{},"0.1.0",". Do npm i PyPI trafią razem z wydaniem ",[20,25,26],{},"1.0.0",",\nwięc polecenia ",[20,29,30],{},"npm install"," i ",[20,33,34],{},"pip install"," na tych stronach to te, którymi\n",[37,38,39],"strong",{},"będzie się"," je instalować — dziś nie znajdą niczego. Cała reszta opisuje\nrzeczywiste zachowanie tych paczek.",[16,42,43],{},"Cztery strony, po jednej na stos. Różnią się tylko tym, gdzie leży adres\npowrotny i kto trzyma instancję klienta; samo logowanie to w każdej z nich ten\nsam przepływ authorization code z PKCE.",[45,46,47,62,71,87],"ul",{},[48,49,50,57,58,61],"li",{},[37,51,52],{},[53,54,56],"a",{"href":55},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Fprzegladarka","Zwykła przeglądarka"," —\ndowolny bundler, dowolny framework bez naszego modułu.\n",[20,59,60],{},"@kleora-io\u002Fbrowser",".",[48,63,64,70],{},[37,65,66],{},[53,67,69],{"href":68},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Fnextjs","Next.js"," — App Router, z tą samą\npaczką używaną z komponentu klienckiego.",[48,72,73,79,80,83,84,61],{},[37,74,75],{},[53,76,78],{"href":77},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Fnuxt","Nuxt"," — ",[20,81,82],{},"@kleora-io\u002Fnuxt",", z\nwłasną stroną powrotu, middleware tras i uwierzytelnionym ",[20,85,86],{},"$fetch",[48,88,89,95],{},[37,90,91],{},[53,92,94],{"href":93},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Fexpress","Express"," — druga połowa:\nsprawdzenie w Twoim API tego, czym zalogowała się przeglądarka.",[97,98,100],"h2",{"id":99},"czego-potrzebuje-każdy-z-nich","Czego potrzebuje każdy z nich",[16,102,103],{},"Aplikacji, a z przeglądu jej środowiska — trzech wartości:",[105,106,107,120],"table",{},[108,109,110],"thead",{},[111,112,113,117],"tr",{},[114,115,116],"th",{},"Wartość",[114,118,119],{},"Wygląda tak",[121,122,123,134,148],"tbody",{},[111,124,125,129],{},[126,127,128],"td",{},"Issuer",[126,130,131],{},[20,132,133],{},"https:\u002F\u002Facme.sandbox.kleora.eu",[111,135,136,139],{},[126,137,138],{},"Client id",[126,140,141,144,145],{},[20,142,143],{},"client_id"," klienta ",[20,146,147],{},"Default",[111,149,150,153],{},[126,151,152],{},"Adres powrotny",[126,154,155],{},"ten, który zaraz zarejestrujesz",[16,157,158,159,163,164,167,168,171],{},"Zakładanie aplikacji opisuje ",[53,160,162],{"href":161},"\u002Fpl\u002Fdocs\u002Fpierwsze-kroki\u002Fszybki-start","szybki\nstart",". Pracuj na issuerze ",[37,165,166],{},"sandbox",": to\njedyne środowisko, które w ogóle przyjmuje adresy powrotne na ",[20,169,170],{},"http:\u002F\u002Flocalhost",",\na jego użytkownicy nigdy nie dotykają produkcji.",[97,173,175,176,179,180],{"id":174},"zarejestruj-i-callback-i-authcallback","Zarejestruj i ",[20,177,178],{},"\u002Fcallback",", i ",[20,181,182],{},"\u002Fauth\u002Fcallback",[16,184,185,186,189],{},"Adres powrotny jest porównywany ",[37,187,188],{},"dokładnie"," — schemat, host, port i ścieżka.\nDwie przeglądarkowe paczki montują swój adres powrotny w różnych miejscach:",[105,191,192,202],{},[108,193,194],{},[111,195,196,199],{},[114,197,198],{},"Paczka",[114,200,201],{},"Gdzie ląduje",[121,203,204,219],{},[111,205,206,210],{},[126,207,208],{},[20,209,60],{},[126,211,212,213,216,217,61],{},"Tam, gdzie wskażesz w ",[20,214,215],{},"redirectUri",". W przykładach jest to ",[20,218,178],{},[111,220,221,225],{},[126,222,223],{},[20,224,82],{},[126,226,227,229,230,61],{},[20,228,182],{}," — strona dodawana przez moduł, domyślna wartość ",[20,231,232],{},"callbackPath",[16,234,235,236,238],{},"Dlatego na kliencie ",[20,237,147],{}," swojego środowiska sandbox zarejestruj oba:",[240,241,246],"pre",{"className":242,"code":244,"language":245},[243],"language-text","http:\u002F\u002Flocalhost:3000\u002Fcallback\nhttp:\u002F\u002Flocalhost:3000\u002Fauth\u002Fcallback\n","text",[20,247,244],{"__ignoreMap":248},"",[16,250,251,252,255],{},"Zarejestrowanie tylko tego, którego akurat używa pierwszy stos, to błąd, który\nwarto ominąć: następna osoba, która spróbuje modułu dla Nuxt na tej samej\naplikacji, dostanie ",[20,253,254],{},"invalid_redirect_uri"," przy pierwszym logowaniu — w\naplikacji, która minutę wcześniej działała. Dwa wpisy nic nie kosztują, a ta\nawaria kosztuje popołudnie.",[16,257,258,259,79,262,265,266,269,270,272,273,276],{},"Zarejestruj też ",[37,260,261],{},"adres po wylogowaniu",[20,263,264],{},"http:\u002F\u002Flocalhost:3000\u002F"," — bo to tam\n",[20,267,268],{},"logout()"," odsyła przeglądarkę, a ta lista też jest porównywana dokładnie.\n",[20,271,82],{}," domyślnie ustawia ",[20,274,275],{},"returnTo"," na korzeń witryny, więc akurat\nbez tego jednego wpisu się nie obejdzie.",[11,278,281],{"title":279,"type":280},"Porty i ścieżki są Twoje","note",[16,282,283,286,287,290],{},[20,284,285],{},"3000"," powyżej to domyślny port Next.js i Nuxt; Vite ma ",[20,288,289],{},"5173",". Cokolwiek robi\nTwój serwer deweloperski, zarejestrowany adres musi mówić to samo — inny port to\ninny adres.",[97,292,294],{"id":293},"produkcja-różni-się-jedną-rzeczą-na-którą-wpada-się-wcześnie","Produkcja różni się jedną rzeczą, na którą wpada się wcześnie",[16,296,297,298,301,302,304],{},"Środowisko produkcyjne przyjmuje wyłącznie adresy powrotne ",[20,299,300],{},"https:\u002F\u002F",". Wpisów z\n",[20,303,170],{},", na których pracujesz, nie da się tam przenieść — produkcja ma\nwłasną listę, na własnym kliencie, z Twoim prawdziwym adresem.",{"title":248,"searchDepth":306,"depth":306,"links":307},3,[308,310,312],{"id":99,"depth":309,"text":100},2,{"id":174,"depth":309,"text":311},"Zarejestruj i \u002Fcallback, i \u002Fauth\u002Fcallback",{"id":293,"depth":309,"text":294},"Po jednej stronie na stos — Next.js, Nuxt, Express i zwykła przeglądarka — i dwa adresy powrotne, które łączą je wszystkie.","md","guides\u002Fquickstarts\u002Findex",{},true,10,"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fframeworki",false,{"title":5,"description":313},"pl\u002Fdocs\u002Fprzewodniki\u002Fframeworki\u002Findex","5E8ikFn43h7sFISFIbSftDnE7AbO12NxKLQ9W5wIcIg",[325,331,336,342,346,352,356,357,360,363,366,371,376,381],{"path":326,"title":327,"description":328,"order":329,"key":330},"\u002Fpl\u002Fdocs","Dokumentacja Kleora","Dodaj hostowane logowanie do swojej aplikacji, sprawdź token w swoim API i zarządzaj użytkownikami, przestrzeniami roboczymi i rolami z jednej konsoli.",0,"index",{"path":332,"title":333,"description":334,"order":318,"key":335},"\u002Fpl\u002Fdocs\u002Fpierwsze-kroki","Pierwsze kroki","Od pustego projektu do działającego logowania — i paczki, które do tego prowadzą.","getting-started\u002Findex",{"path":337,"title":338,"description":339,"order":340,"key":341},"\u002Fpl\u002Fdocs\u002Fpierwsze-kroki\u002Finstalacja","Instalacja SDK","Pięć paczek, które publikujemy, do czego służy każda z nich i jakiej konfiguracji wymaga.",20,"getting-started\u002Finstallation",{"path":161,"title":343,"description":344,"order":318,"key":345},"Szybki start","Załóż aplikację, podłącz SDK przeglądarkowe i zaloguj się po raz pierwszy — w całości w sandboksie.","getting-started\u002Fquickstart",{"path":347,"title":348,"description":349,"order":350,"key":351},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Farchitektura","Jak zbudowana jest Kleora","Kształt usługi hostowanej — jeden adres na środowisko, dwie powierzchnie API i miejsce, w którym leży stan. Oraz dlaczego hostowania u siebie dzisiaj nie wspieramy.",30,"guides\u002Farchitecture",{"path":93,"title":94,"description":353,"order":354,"key":355},"Sprawdzanie tokenu dostępu we własnym API — middleware, uprawnienia i trzy odpowiedzi, jakie może mieć odmowa.",40,"guides\u002Fquickstarts\u002Fexpress",{"path":319,"title":5,"description":313,"order":318,"key":315},{"path":68,"title":69,"description":358,"order":340,"key":359},"SDK przeglądarkowe w aplikacji na App Router — leniwy klient, trasa powrotna i sprawdzanie tokenu w route handlerze.","guides\u002Fquickstarts\u002Fnextjs",{"path":77,"title":78,"description":361,"order":350,"key":362},"Moduł dla Nuxt — dwie linijki konfiguracji, strona powrotu, której nie piszesz, i middleware chroniący stronę z jej własnych metadanych.","guides\u002Fquickstarts\u002Fnuxt",{"path":55,"title":56,"description":364,"order":318,"key":365},"Jedna instancja klienta, jedna trasa powrotna i token dostępu do każdego żądania, które wysyła Twoja aplikacja.","guides\u002Fquickstarts\u002Fbrowser",{"path":367,"title":368,"description":369,"order":340,"key":370},"\u002Fpl\u002Fdocs\u002Fprzewodniki","Przewodniki","Jak podłączyć usługę Kleora do swojego stosu, jakich słów używa produkt i jak zbudowana jest usługa hostowana.","guides\u002Findex",{"path":372,"title":373,"description":374,"order":340,"key":375},"\u002Fpl\u002Fdocs\u002Fprzewodniki\u002Fpojecia","Przestrzenie robocze, role i środowiska","Pięć słów, z których zbudowany jest produkt, to, które z nich niosą Twoje tokeny, i jak zmiana roli dociera do działającej aplikacji.","guides\u002Fconcepts",{"path":377,"title":378,"description":379,"order":350,"key":380},"\u002Fpl\u002Fdocs\u002Freferencje","Referencje","Materiały referencyjne dla API HTTP i paczek SDK.","reference\u002Findex",{"path":382,"title":383,"description":384,"order":318,"key":385},"\u002Fpl\u002Fdocs\u002Freferencje\u002Fpodswietlanie","Podświetlanie kodu","Po jednym bloku na każdą wstępnie wczytaną gramatykę Shiki — próbka, nie strona referencyjna.","reference\u002Fcode-highlighting",1790698197969]