{"id":231727,"date":"2023-01-11T10:09:00","date_gmt":"2023-01-11T07:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231727"},"modified":"2022-12-25T18:53:51","modified_gmt":"2022-12-25T15:53:51","slug":"firebasei-sisselogimise-loomine-ja-reactis-registreerumine","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/firebasei-sisselogimise-loomine-ja-reactis-registreerumine\/","title":{"rendered":"Firebase&#8217;i sisselogimise loomine ja Reactis registreerumine"},"content":{"rendered":"\n<p>Firebase on s\u00fcsteem, mis pakub arendajatele veebirakenduste loomiseks palju platvorme. \u00dcks rakenduse olulisi elemente on kasutajate loomine ja sisselogimise v\u00f5imaldamine. Vaatame, kuidas saame kirjutada Firebase&#8217;i sisselogimise, mis on t\u00e4ielik, kuid v\u00e4ga lihtne rakendada.<\/p>\n<h2>Looge oma Firebase&#8217;i rakendus<\/h2>\n<p>Esmalt peate looma Firebase&#8217;i rakenduse projekti, nii et minge Firebase&#8217;i konsooli ja lisage uus projekt. Lisate rakenduse siia.<\/p>\n<p><a href=\"https:\/\/console.firebase.google.com\/u\/0\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/console.firebase.google.com\/<\/a><\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6bffde950b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6bffde950b.png\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>See k\u00e4ivitab assistendi, kes k\u00fcsib teilt projekti nime.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6bfffb1eed.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6bfffb1eed.png\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>J\u00e4rgmisel ekraanil k\u00fcsitakse, kas soovite anal\u00fc\u00fctika lubada. L\u00fclitage see v\u00e4lja ja kl\u00f5psake nuppu <strong>Loo projekt<\/strong>. Projekti ettevalmistamine v\u00f5tab veidi aega ja p\u00e4rast seda n\u00e4ete nuppu <strong>J\u00e4tka<\/strong>, mis viib teid projekti \u00fclevaate juurde.<\/p>\n<p>N\u00fc\u00fcd peate Firebase&#8217;i projekti lisama Firebase&#8217;i rakenduse. K\u00f5lab loogiliselt? Firebase&#8217;i projekt v\u00f5imaldab teil sisaldada mitut Firebase&#8217;i rakendust iOS-i, Androidi, veebi ja Unity jaoks. Praegu loome veebirakenduse, kuna kasutame Firebase&#8217;i sisselogimise loomiseks Reacti.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c001c1120.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c001c1120.png\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>Teil palutakse sellele rakendusele nimi anda ja teile antakse v\u00f5tmed, mida peate Firebase&#8217;iga \u00fchenduse loomiseks kasutama. Need n\u00e4evad v\u00e4lja umbes sellised:<\/p>\n<pre><code>var firebaseConfig = {\n    apiKey: \"1A2B3C4D5E6F7G\",\n    authDomain: \"appname-a123b.firebaseapp.com\",\n    databaseURL: \"https:\/\/appname-a123b.firebaseio.com\",\n    projectId: \"appname-a123b\",\n    storageBucket: \"appname-a123b.appspot.com\",\n    messagingSenderId: \"1234567890\",\n};<\/code><\/pre>\n<p>Kasutame neid v\u00f5tmeid oma rakenduses <a href=\"https:\/\/startfunction.com\/tag\/react\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React<\/a>, et konfigureerida pakkuja, mis v\u00f5imaldab meil Firebase&#8217;ile juurde p\u00e4\u00e4seda mis tahes teenusepakkuja all olevas komponendis.<\/p>\n<p>L\u00f5puks avage vasakpoolsel k\u00fclgribal <strong>Autentimine<\/strong>, vahekaart <strong>Sisselogimismeetod ja lubage<\/strong> <strong>meili\/parooli<\/strong> autentimine.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c00385c64.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c00385c64.png\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>K\u00f5ik on valmis!<\/p>\n<h2>Installige Firebase&#8217;i s\u00f5ltuvused<\/h2>\n<p>Firebase on saadaval erinevate virnade jaoks, sealhulgas <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScripti<\/a> ja <a href=\"https:\/\/startfunction.com\/tag\/node-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Node.js<\/a> -i jaoks, mida me n\u00fc\u00fcd kasutame. Installime npm-iga ainult kaks s\u00f5ltuvust:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/firebase\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>firebase<\/code><\/a>, mis v\u00f5imaldab meil p\u00e4\u00e4seda juurde n\u00e4iteks <code>auth<\/code>teegile, mida kasutame sisselogimiseks ja ka uue kasutaja loomiseks<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/reactfire\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>reactfire<\/code><\/a>, kasulike t\u00f6\u00f6riistade kogum Firebase&#8217;iga t\u00f6\u00f6tamiseks rakenduses React. Kasutame <code>useFirebaseApp<\/code>neid kontekstiga \u00fchenduse loomiseks ja Firebase&#8217;ile juurdep\u00e4\u00e4suks<\/li>\n<\/ul>\n<p>Paigaldame need koos<\/p>\n<pre><code>npm i firebase reactfire<\/code><\/pre>\n<p><a href=\"https:\/\/startfunction.com\/tag\/react\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Rakenduse React<\/a> struktuur on v\u00e4ga lihtne:<\/p>\n<pre><code>|-- index.js\n|-- App.js\n|-- FirebaseUser\n    |-- index.js<\/code><\/pre>\n<p>ja need on seotud j\u00e4rgmiselt:<\/p>\n<pre><code>index.js --import--&gt; .\/App.js --import--&gt; .\/FirebaseUser<\/code><\/pre>\n<h2>Seadistage Firebase&#8217;i pakkuja<\/h2>\n<p>Kirjutame esimese faili Firebase&#8217;i sisselogimiseks ja registreerumiseks! Me ei pea seda tegelikult kirjutama, sest see tuleks lisada faili, kuhu v\u00e4ljastate <code>ReactDOM.render()<\/code>, meie puhul on see <code>index.js<\/code>:<\/p>\n<pre><code>import { FirebaseAppProvider } from 'reactfire';\n\nconst firebaseConfig = {\n    apiKey: \"1A2B3C4D5E6F7G\",\n    authDomain: \"appname-a123b.firebaseapp.com\",\n    databaseURL: \"https:\/\/appname-a123b.firebaseio.com\",\n    projectId: \"appname-a123b\",\n    storageBucket: \"appname-a123b.appspot.com\",\n    messagingSenderId: \"925199572988\",\n    appId: \"1:123456789:web:12a34b56c78d90e\"\n};<\/code><\/pre>\n<p>See impordib <code>FirebaseAppProvider<\/code>ja lisab sellele edastatavad konfiguratsiooniv\u00f5tmed. N\u00fc\u00fcd saate m\u00e4hkida juurkomponendi, mis meie puhul on <code>App<\/code>teenusepakkujaga:<\/p>\n<pre><code>ReactDOM.render(, document.getElementById('root')\n);<\/code><\/pre>\n<p>Suurep\u00e4rane! N\u00fc\u00fcd p\u00e4\u00e4sevad Firebase&#8217;ile juurde k\u00f5ik allolevad komponendid!<\/p>\n<h2>Kasutage Firebase&#8217;i sisselogimis- ja registreerumiskomponenti<\/h2>\n<p>Kirjutame n\u00fc\u00fcd <code>App<\/code>komponendi, kuhu impordime ja mida kasutame <code>FirebaseUser<\/code>kasutaja loomiseks ja sisselogimiseks. Siin pole <a href=\"https:\/\/startfunction.com\/tag\/firebase\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Firebase&#8217;iga<\/a> tegelikult midagi seotud. Rakendame sisselogimise ja registreerumise sama komponendi abil, et saaksite n\u00e4ha, kuidas saame koodi uuesti kasutada, nii et selles komponendis rakendame paar nuppu, millel kl\u00f5psamisel renderdatakse <code>FirebaseUser<\/code>sisselogimisre\u017eiimis v\u00f5i registreerumisre\u017eiim:<\/p>\n<pre><code>import React, { useState } from 'react';\nimport FirebaseUser from '.\/FirebaseUser';\n\nfunction App() {\n  const [ signInOrUp, setSignInOrUp ] = useState( '' );\n  return (Firebase login\n      {\n        signInOrUp?(): (&lt;&gt;\n             setSignInOrUp( 'signin') } &gt;Log in with existing user\n             setSignInOrUp( 'signup') } &gt;Create a new user) }\n\n  );\n}\n\nexport default App;\n<\/code><\/pre>\n<h2>Seadistage Firebase&#8217;i sisselogimine ja registreeruge<\/h2>\n<p>Loome selle jaoks komponendi. Esmalt peame importima m\u00f5ned moodulid:<\/p>\n<pre><code>import React, { useState } from 'react';\nimport { useFirebaseApp } from 'reactfire';\nimport 'firebase\/auth';<\/code><\/pre>\n<p>Uurime <code>useState<\/code>m\u00f5nda asja, alates teadmisest, kas kasutaja on autentitud, kuni vigade m\u00e4\u00e4ramiseni. Me kasutame <code>useFirebaseApp<\/code>Firebase&#8217;i \u00fchendusele juurdep\u00e4\u00e4su saamiseks konksu. See on v\u00f5imalik ainult seet\u00f5ttu, et seadistasime Firebase&#8217;i pakkuja eelmises etapis ja see on saadaval ainult selle hierarhia all, kuhu see lisati. L\u00f5puks impordime <code>auth<\/code>teegi, et saaksime kasutajate loomiseks ja sisselogimiseks kutsuda Firebase&#8217;i meetodeid. See on t\u00f5hus viis, kuna laadime ainult seda teeki, mitte muid, nagu <code>firestore<\/code>NoSQL-i andmebaasi v\u00f5i <code>messaging<\/code>s\u00f5numite ja teatiste jaoks.<\/p>\n<p>J\u00e4rgmisena lisame sisestusv\u00e4ljade haldamiseks kiirkonksu:<\/p>\n<pre><code>const useField =() =&gt; {\n    const [ value, setValue ] = useState( '' );\n    return { value, onChange: x =&gt; setValue( 'string' === typeof x? x: x.target.value) };\n};<\/code><\/pre>\n<p>Ja l\u00f5puks t\u00e4iskomponent, mille me allpool jaotame, et tuua v\u00e4lja k\u00f5ige huvitavamad osad, mis on seotud Firebase&#8217;i sisselogimise ja registreerumisega.<\/p>\n<pre><code>function FirebaseUser ({ action = 'signin' }) {\n    const email = useField();\n    const password = useField();\n    const [ auth, setAuth ] = useState( null );\n    const [ error, setError ] = useState( '' );\n    const firebase = useFirebaseApp();\n    const setReceivedData = data =&gt; setAuth( data );\n    const setReceivedError = error =&gt; setError( error.message );\n\n    const signIn = e =&gt; {\n        e.preventDefault();\n        setError( '' );\n        firebase.auth()\n            .signInWithEmailAndPassword( email.value, password.value) .then( setReceivedData) .catch( setReceivedError );\n    };\n\n    const signUp = e =&gt; {\n        e.preventDefault();\n        setError( '' );\n        firebase.auth()\n            .createUserWithEmailAndPassword( email.value, password.value) .then( setReceivedData) .catch( setReceivedError );\n    };\n\n    const manage = 'signin' === action? {\n            success: `Logged in as ${ auth?.user.email ?? '' }`,\n            method: signIn,\n            label: 'Sign In'\n        }: {\n            success: `Signed up as ${ auth?.user.email ?? '' }`,\n            method: signUp,\n            label: 'Sign Up'\n        };\n\n    return ({\n                auth? ({ manage.success }\n                ): (&lt;&gt;\n\n                            { manage.label }\n                            {\n                                error &amp;&amp; { error }\n                            }) }\n\n    );\n}\n\nexport default FirebaseUser;\n<\/code><\/pre>\n<p>Esiteks \u00fchendame Firebase&#8217;i eksemplari:<\/p>\n<pre><code>const firebase = useFirebaseApp();<\/code><\/pre>\n<p>Nagu eelnevalt m\u00e4rgitud, on see v\u00f5imalik, kuna <code>App<\/code>pakkisime komponendi eelnevalt Firebase&#8217;i pakkujaga. N\u00fc\u00fcd, kui oleme Firebase&#8217;iga \u00fchendatud, saame kasutada seda <code>auth<\/code>funktsiooni ja helistada <code>signInWithEmailAndPassword<\/code>:<\/p>\n<pre><code>const signIn = e =&gt; {\n        e.preventDefault();\n        setError( '' );\n        firebase.auth()\n            .signInWithEmailAndPassword( email.value, password.value) .then( setReceivedData) .catch( setReceivedError );\n};<\/code><\/pre>\n<p>Kui see \u00f5nnestub, m\u00e4\u00e4rab see tagastatud andmed ja vormiv\u00e4ljad asendatakse v\u00e4ljadega<\/p>\n<pre><code>Logged in as ${ auth?.user.email ?? '' }<\/code><\/pre>\n<p>Tagastatud andmed on suur objekt, millel on v\u00e4ga huvitavad omadused, nii et tasub lisada <code>console.log()<\/code>meie <code>setReceivedData()<\/code>funktsiooni, et n\u00e4ha, mida see veel sisaldab.<\/p>\n<p>Kasutaja loomise protsess on sarnane, v\u00e4lja arvatud see, et kasutame funktsiooni <code>createUserWithEmailAndPassword()<\/code>.<\/p>\n<h2>J\u00e4reldus<\/h2>\n<p>Meie Firebase&#8217;i sisselogimise testimiseks ja registreerumiseks v\u00f5ite proovida sisse logida kasutajaga, keda pole olemas, et saaksite vigu n\u00e4ha. P\u00e4rast seda looge kasutaja ja logige seej\u00e4rel kasutajana sisse.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c00594d08.gif\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c00594d08.gif\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>Firebase&#8217;i sisselogimise ja registreerumise demo.<br \/>\nL\u00f5bus fakt: Chrome kaebab, et parool 123456, mida ma testimiseks kasutan, on rikutud, mis on t\u00f5si.<\/p>\n<p>Kui l\u00e4hete n\u00fc\u00fcd tagasi Firebase&#8217;i rakendusele &gt; Autentimine &gt; Kasutajad, n\u00e4ete uut kasutajat (peate v\u00f5ib-olla kasutama valiku Lisa kasutaja k\u00f5rval olevat v\u00e4rskendamisnuppu).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c007b1816.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157701-61e6c007b1816.png\" alt=\"Firebase&#039;i sisselogimise loomine ja Reactis registreerumine\" ><\/a><\/p>\n<p>Kokkuv\u00f5tteks on olulised sammud Firebase&#8217;i integreerimiseks meie Reacti rakendusse:<\/p>\n<ul>\n<li>seadistage Firebase&#8217;i pakkuja ja m\u00e4hitage juurkomponent (v\u00f5i hierarhia juur, kus soovite seda kasutada)<\/li>\n<li>konks kasutades Firebase&#8217;i pakkujat<code>useFirebaseApp<\/code><\/li>\n<li>kasutage autentimisfunktsioone!<\/li>\n<\/ul>\n<p>Kontrollige GitHubi hoidlat aadressil <a href=\"https:\/\/github.com\/eliorivero\/firebase-login-sign-up\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/eliorivero\/firebase-login-sign-up<\/a>. Ainus erinevus selle puhul on see, et laadin Firebase&#8217;i konfigureerimiseks v\u00f5tmed .env-failist, et v\u00e4ltida nende avalikku paljastamist.<\/p>\n<p>Kui teil on k\u00fcsimusi, andke mulle allolevates kommentaarides teada!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lugege, kuidas luua Firebase&#8217;i sisselogimist ja registreeruda s\u00fcsteemis Reactis konksude abil.<\/p>\n","protected":false},"author":1,"featured_media":157702,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,781,833,894,842],"tags":[1165],"class_list":["post-231727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-avatud-laehtekoodiga-tarkvara","category-juhend-algajatele","category-kood","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231727"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/157702"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}