1 00:00:02,100 --> 00:00:03,360 Wir haben also 2 00:00:03,390 --> 00:00:05,460 viel erreicht, wir können Daten schreiben, Daten 3 00:00:05,460 --> 00:00:08,190 abrufen, unser Token verwenden, um Daten zu erfassen oder Produkte 4 00:00:08,190 --> 00:00:10,950 und Bestellungen an unseren aktuell angemeldeten Benutzer zu senden, wir 5 00:00:10,950 --> 00:00:12,610 können uns anmelden und so weiter 6 00:00:12,620 --> 00:00:14,280 und das ist alles schön. 7 00:00:14,280 --> 00:00:20,130 Eine Sache, die wir momentan nicht tun, ist, dass wir unsere Sitzungen 8 00:00:20,130 --> 00:00:23,970 sozusagen nicht fortsetzen. Wenn ich neu lade, muss ich 9 00:00:24,030 --> 00:00:25,230 mich immer wieder 10 00:00:25,230 --> 00:00:31,170 anmelden und das ist nicht wirklich das, was ich will. Es wäre schön, wenn wir uns automatisch anmelden könnten, wenn 11 00:00:31,170 --> 00:00:38,310 wir ein gültiges Token haben, und dafür müssen wir zwei Dinge tun - wir müssen das Token speichern Irgendwo auf dem Gerät, nicht in 12 00:00:38,310 --> 00:00:43,110 Redux, da sich Redux im Speicher befindet und dies bei jedem Neustart der App verloren geht. 13 00:00:43,110 --> 00:00:45,920 Es muss sich also sozusagen irgendwo auf 14 00:00:45,930 --> 00:00:53,480 der Festplatte des Geräts befinden. Außerdem müssen wir diesen Speicher bei jedem Start unserer App überprüfen und das Token in Redux 15 00:00:53,480 --> 00:00:58,080 automatisch festlegen und den Benutzer umleiten, wenn wir dort ein gültiges Token finden. 16 00:00:59,160 --> 00:01:05,590 Beginnen wir jetzt mit dem Speichern, da dies ein logischer erster Schritt ist. Zum Speichern müssen wir 17 00:01:05,590 --> 00:01:10,090 hier etwas in den Action Action Creator 18 00:01:10,090 --> 00:01:20,810 des Produkts importieren, aber hier im Auth Action Creator müssen Sie asynchronen Speicher aus React Native importieren. 19 00:01:21,930 --> 00:01:23,280 Wenn dies 20 00:01:23,460 --> 00:01:32,130 importiert ist, können wir damit Daten auf dem Gerät speichern. Der asynchrone Speicher ist eine native React-API, die letztendlich einen Schlüsselwertspeicher auf dem 21 00:01:32,130 --> 00:01:38,370 Gerät verwendet, der sowohl unter iOS als auch unter Android verfügbar ist und in dem Daten 22 00:01:38,370 --> 00:01:45,150 gespeichert werden können, die weiterhin bestehen über App-Neustarts hinweg, sodass wir Daten speichern können, die beim Start oder 23 00:01:45,150 --> 00:01:47,460 Neustart der App nicht verloren gehen. 24 00:01:47,460 --> 00:01:52,910 Also werde ich eine neue Funktion hinzufügen, Daten im Speicher speichern oder so etwas und dort 25 00:01:53,040 --> 00:02:00,100 erwarte ich mein Token und meine Benutzer-ID, die beiden Daten, die mich hier interessieren, und wir können jetzt den asynchronen Speicher 26 00:02:00,140 --> 00:02:08,970 bis dahin verwenden Legen Sie ein Element fest, mit dem Sie Daten speichern, und das Element, das Sie festlegen, muss eine Zeichenfolge sein. Zunächst müssen Sie 27 00:02:08,970 --> 00:02:11,560 jedoch einen Schlüssel definieren. Ich werde ihn 28 00:02:11,580 --> 00:02:14,840 als Benutzerdaten bezeichnen, aber das liegt bei Ihnen. Sie 29 00:02:14,850 --> 00:02:19,260 benötigen diesen Schlüssel später Um Ihre Daten abzurufen und der zweite Wert ist 30 00:02:19,330 --> 00:02:21,170 jetzt eine Zeichenfolge, also 31 00:02:21,180 --> 00:02:26,310 die Zeichenfolge, die Sie dort speichern möchten, und Sie müssen im Wesentlichen eine Zeichenfolge speichern. 32 00:02:26,440 --> 00:02:27,340 Das 33 00:02:27,340 --> 00:02:33,990 ist kein Problem, wir können json verwenden. stringify, um ein Javascript-Objekt in eine Zeichenfolge zu konvertieren, und das Objekt, 34 00:02:33,990 --> 00:02:40,200 das ich konvertieren möchte, ist ein Objekt, das mein Token enthält, das ich hier als Argument erhalte, und das die Benutzer-ID enthält, 35 00:02:40,200 --> 00:02:41,740 die ich als Argument erhalte. 36 00:02:41,790 --> 00:02:48,980 Am Ende speichern wir dieses Objekt als Zeichenfolge auf dem Gerät. 37 00:02:48,990 --> 00:02:54,590 Jetzt müssen wir nur noch Save Data to Storage aufrufen, wenn wir uns angemeldet oder angemeldet haben. Hier können wir also möglicherweise nach 38 00:02:54,590 --> 00:03:01,080 dem Versand der Anmeldung Save Data to Storage aufrufen und resData weiterleiten. idToken 39 00:03:01,140 --> 00:03:08,100 und resData. localId, also die gleichen Dinge, die wir in Redux verwenden 40 00:03:08,100 --> 00:03:11,610 und die wir definitiv dort verwenden möchten, da Redux für die laufende 41 00:03:11,850 --> 00:03:18,090 Anwendung wichtig ist, aber ich speichere es auch auf dem Gerät, wenn wir es beim Neustart der App laden möchten. 42 00:03:18,140 --> 00:03:22,810 Nun, das allein reicht nicht aus und wir müssen es natürlich auch tun, wenn 43 00:03:22,820 --> 00:03:28,340 wir uns anmelden, aber das allein reicht nicht aus. Wir brauchen hier eine zusätzliche Information, bevor wir fortfahren. 44 00:03:28,430 --> 00:03:35,780 Weißt du was? Wir müssen wissen, wie lange das Token gültig ist, da Sie 45 00:03:36,230 --> 00:03:42,920 nicht vergessen dürfen, dass es irgendwann abläuft. Aus diesem Grund erhalten Sie beim Anmelden und Registrieren den Schlüssel expiresIn in 46 00:03:43,310 --> 00:03:50,510 der Antwort, der Ihnen in Sekunden angibt, wie lange es dauert, bis Ihr Token verfügbar ist ist ungültig und Firebase akzeptiert es 47 00:03:50,510 --> 00:03:51,510 nicht mehr. 48 00:03:51,650 --> 00:03:57,590 Wir müssen diese Informationen auch speichern, denn wenn wir später wiederkommen und die App nach drei Stunden neu starten, 49 00:03:57,590 --> 00:04:01,390 ist unser Token wahrscheinlich ungültig. Daher müssen wir wissen, wann das Token 50 00:04:01,460 --> 00:04:04,370 ungültig wird, damit wir, wenn wir das überprüfen, 51 00:04:04,370 --> 00:04:09,800 wann das Wenn die App neu gestartet wird und wir prüfen, ob wir ein Token haben, wissen wir, 52 00:04:09,800 --> 00:04:16,460 ob das Token, das wir möglicherweise finden, tatsächlich noch relevant ist oder ob es bereits ungültig ist, und wir benötigen sowieso ein 53 00:04:16,460 --> 00:04:20,120 neues Token. In diesem Fall sollten wir den Benutzer nicht automatisch anmelden. 54 00:04:20,480 --> 00:04:23,360 Ich möchte also das Ablaufdatum 55 00:04:23,360 --> 00:04:31,180 speichern und hier das Ablaufdatum als Konstante erstellen, ein neues Datumsobjekt, das am Ende das aktuelle 56 00:04:31,180 --> 00:04:35,020 Datum annehmen und die Ablaufzeit hinzufügen sollte. 57 00:04:37,810 --> 00:04:45,790 Jetzt nimmt das neue Datum ein Datumsobjekt an, aber mit get time erhalten wir sozusagen den aktuellen Zeitstempel in Millisekunden 58 00:04:45,790 --> 00:04:49,590 seit Beginn der Zeit, der hier im Jahr 1970 59 00:04:49,780 --> 00:04:51,200 in Javascript steht. 60 00:04:51,570 --> 00:04:57,630 Das ist also ein Betrag in Millisekunden, und dazu können wir resData hinzufügen. Läuft ab in. 61 00:04:58,210 --> 00:05:01,720 Dies ist eine Anzahl von Sekunden, also müssen wir dies 62 00:05:01,720 --> 00:05:06,910 in Millisekunden konvertieren und es ist auch eine Zeichenfolge, also müssen wir es in eine Zahl konvertieren. 63 00:05:06,910 --> 00:05:16,490 Hier füge ich hier ein Plus hinzu oder parseInt alternativ, um dies in eine Ganzzahl umzuwandeln, und multipliziere dies dann mit 64 00:05:16,490 --> 00:05:23,550 1000, um es von Sekunden in Millisekunden umzuwandeln, da die Zeit auch Millisekunden ergibt. 65 00:05:23,570 --> 00:05:29,690 Dies gibt mir nun einen neuen Zeitstempel in der Zukunft, der die aktuelle Zeit plus 66 00:05:29,690 --> 00:05:35,990 die Ablaufzeit darstellt, und ich verpacke diesen in ein anderes Datumsobjekt, um es von einer 67 00:05:36,110 --> 00:05:44,520 riesigen Millisekundenzahl zurück in ein konkretes Zeitstempel-Datumsobjekt zu konvertieren. Dieses Ablaufdatum müssen wir jetzt auch übergeben, um Daten im 68 00:05:44,530 --> 00:05:48,880 Speicher zu speichern. Daher erwarte ich hier auch das Ablaufdatum, und 69 00:05:48,880 --> 00:05:51,070 wir müssen dies hier einschließen. 70 00:05:51,400 --> 00:05:55,810 Hier kann ich dieses Ablaufdatum benennen, um die Dinge 71 00:05:55,840 --> 00:06:05,830 zu verwechseln. Dies ist mein Ablaufdatum. Dort möchte ich diese nette kleine toISOString-Methode aufrufen, die wir für Datumsobjekte aufrufen können, 72 00:06:05,830 --> 00:06:11,500 da sie dadurch in eine Zeichenfolge in einem standardisierten Format konvertiert 73 00:06:11,500 --> 00:06:14,240 wird Ich möchte sparen. 74 00:06:14,400 --> 00:06:18,150 Dies ist nun das, was ich auch für die Anmeldung tun möchte, 75 00:06:18,150 --> 00:06:20,190 damit dies dort kopiert werden kann. Dies 76 00:06:20,520 --> 00:06:22,120 ist auch das, was 77 00:06:22,170 --> 00:06:26,220 ich dort tun möchte. Erstellen Sie das Ablaufdatum und speichern Sie es im Speicher. 78 00:06:26,220 --> 00:06:29,220 Jetzt speichern wir das im Speicher, was nett ist, aber 79 00:06:29,670 --> 00:06:35,670 jetzt müssen wir dies auch überprüfen, wenn wir uns anmelden. Eine gute Möglichkeit, dies zu tun, besteht darin, 80 00:06:35,670 --> 00:06:41,040 einen neuen Bildschirm zu erstellen, und ich werde diesen tatsächlich außerhalb meiner vorhandenen Ordner im Bildschirmordner erstellen, 81 00:06:41,040 --> 00:06:47,570 aber weder im Shop noch im Benutzer. Ich werde diesen Startbildschirm benennen und Sie können ihn wie Sie auch benennen wollen. 82 00:06:47,610 --> 00:06:54,240 Die Idee ist, dass ich diesen Bildschirm während des Startvorgangs meiner App zeige und herausfinde, ob der Benutzer authentifiziert ist oder 83 00:06:54,240 --> 00:06:55,380 nicht. Dies ist 84 00:06:55,380 --> 00:06:56,770 sehr schnell. Wahrscheinlich wird 85 00:06:56,790 --> 00:07:02,350 dieser Bildschirm beim Starten der App nicht einmal angezeigt. Jetzt erstellen wir hier eine reguläre 86 00:07:02,370 --> 00:07:06,670 React-Komponente, indem wir React from React importieren. Dort importiere ich Inhalte 87 00:07:06,910 --> 00:07:11,120 aus React Native. Um genau zu sein, benötige ich eine 88 00:07:11,130 --> 00:07:17,310 Ansicht, die Aktivitätsanzeige, um einen Ladespinner anzuzeigen, während die App startet, und auch Stylesheet und 89 00:07:17,310 --> 00:07:23,280 auch asynchroner Speicher, da ich hier auch auf asynchronen Speicher zugreifen möchte, um herauszufinden, ob 90 00:07:23,280 --> 00:07:26,450 wir ein gültiges Token haben oder nicht. 91 00:07:26,460 --> 00:07:33,660 Hier habe ich dann meine Startbildschirmkomponente, die eine reguläre React-Komponente ist, und 92 00:07:33,780 --> 00:07:44,570 das Stylesheet-Objekt hier mit Stylesheet. erstellen und am Ende können wir diesen Startbildschirm so exportieren. Jetzt in der Komponente werde ich hier 93 00:07:44,580 --> 00:07:56,450 einfach den Aktivitätsindikator mit einer Größe von groß und einer Farbe von Farben präsentieren. primär und dafür müssen Sie diese Farben natürlich 94 00:07:56,450 --> 00:08:05,100 konstant importieren und der Ansicht hier auch einen kleinen Stil zuweisen, und 95 00:08:05,100 --> 00:08:13,520 ich nehme einfach Stile. Bildschirm hier, den wir jetzt zum Stylesheet hinzufügen können 96 00:08:13,520 --> 00:08:16,530 und der sehr einfach sein 97 00:08:16,690 --> 00:08:23,690 sollte, biegen Sie einen, begründen Sie das Inhaltscenter und richten Sie das Elementcenter für einige 98 00:08:23,720 --> 00:08:29,870 vertikal und horizontal zentrierte Inhalte aus. Jetzt passiert natürlich das wirklich Wichtige über dem jsx-Code. 99 00:08:29,870 --> 00:08:33,520 Hier müssen wir jetzt den asynchronen Speicher auf ein gültiges 100 00:08:33,620 --> 00:08:39,820 Token überprüfen, und ich kann dies mit Hilfe des Verwendungseffekts tun, der es mir ermöglicht, hier eine 101 00:08:39,820 --> 00:08:42,230 Logik auszuführen, wenn diese Komponente gemountet 102 00:08:42,250 --> 00:08:51,190 und in der Tat brauche ich hier keine Abhängigkeiten, da ich hier innerhalb des Nutzungseffekts jetzt eine neue Funktion hinzufügen möchte, die ich als "Anmelden" oder 103 00:08:51,190 --> 00:08:58,060 "Anmelden" bezeichnen möchte. Ich verwende die separate Funktion, weil ich hier bin Wenn Sie Async Wait verwenden möchten, was ich 104 00:08:58,090 --> 00:09:04,390 tun kann, indem Sie die innere Funktion erstellen, die ich jetzt hier aufrufen kann, versuchen Sie es mit 105 00:09:04,390 --> 00:09:05,310 Login, da 106 00:09:05,410 --> 00:09:10,840 Async hier auf dieser Funktion, die Sie an den Effekt übergeben, nicht wirklich zulässig ist 107 00:09:10,840 --> 00:09:14,020 und hier beim Versuch Login das Ziel ist Jetzt 108 00:09:14,170 --> 00:09:21,460 müssen Sie den asynchronen Speicher auf ein gültiges Token überprüfen. Daher erhalte ich meine Benutzerdaten hier, indem ich auf AsyncStorage 109 00:09:21,520 --> 00:09:23,030 zugreife. getItem 110 00:09:23,240 --> 00:09:28,750 und verwenden Sie dann den Schlüssel, den Sie zum Speichern verwendet haben. 111 00:09:28,960 --> 00:09:35,950 In meinem Fall handelt es sich also um Benutzerdaten, aber Sie müssen den Schlüssel verwenden, den Sie in Ihrer Authentifizierung verwendet haben. js-Datei im Aktionsordner zum 112 00:09:35,950 --> 00:09:43,160 Speichern Ihrer Daten mit asynchronem Speicher. Ich rufe dies ab und jetzt ist es wichtig 113 00:09:43,160 --> 00:09:49,970 zu wissen, dass get item, wie alle asynchronen Speichermethoden, tatsächlich asynchron ist, was bedeutet, wie der Name vermuten 114 00:09:50,030 --> 00:09:55,520 lässt, was bedeutet, dass Sie hier ein Versprechen erhalten, sodass wir darauf warten können 115 00:09:55,520 --> 00:09:58,560 und Dadurch erhalten wir unsere Benutzerdaten zurück. 116 00:09:58,570 --> 00:10:05,200 Dies sind dann die Daten als Zeichenfolge. Um sie in ein Datenelement zu konvertieren, mit dem 117 00:10:05,230 --> 00:10:14,410 wir arbeiten können, habe ich meine transformierten Daten mit JSON. Wenn Sie Benutzerdaten analysieren, wird eine Zeichenfolge im 118 00:10:14,410 --> 00:10:24,220 JSON-Format analysiert und in ein Javascript-Objekt oder -Array konvertiert. Bevor ich das überhaupt versuche, werde ich prüfen, ob die Benutzerdaten nicht wahr sind. Wenn 119 00:10:24,220 --> 00:10:24,850 sie 120 00:10:24,850 --> 00:10:31,030 also nicht festgelegt sind, können wir keine Daten für diesen Schlüssel finden, da ich weiß, dass wir mit Sicherheit 121 00:10:31,030 --> 00:10:31,720 nicht angemeldet sind. 122 00:10:31,780 --> 00:10:36,370 Hier möchte ich zurückkehren und nicht fortfahren und eine wichtige 123 00:10:36,370 --> 00:10:43,810 Sache tun. Ich verwende die Requisitennavigation und navigiere zum Authentifizierungsbildschirm, da dieser Startbildschirm zum Navigator hinzugefügt werden 124 00:10:43,810 --> 00:10:44,770 muss, 125 00:10:45,190 --> 00:10:52,960 damit wir ihn hier importieren und den Startbildschirm importieren können Natürlich aus dem Ordner "Bildschirme", Startbildschirm und wir 126 00:10:54,070 --> 00:10:57,590 fügen ihn hier im Navigator zum Hauptbildschirm hinzu. 127 00:10:57,760 --> 00:11:07,190 Wo wir also auch Auth und Shop haben und dort ganz oben, füge ich Start hinzu und zeige auf meinen Startbildschirm. 128 00:11:07,350 --> 00:11:11,490 Dies bedeutet, dass dies das erste ist, was ich hier lade. 129 00:11:11,490 --> 00:11:17,010 Auf diesem Startbildschirm gehe ich daher zum Authentifizierungsbildschirm, wenn wir kein Token finden können. 130 00:11:17,010 --> 00:11:22,230 Dank des Switch-Navigators verlasse ich diesen Bildschirm und gehe zum Authentifizierungsbildschirm oder zum 131 00:11:22,230 --> 00:11:28,810 Authentifizierungsstapel, weil ich ihn nicht finde ein Zeichen. Wenn wir es also über diese Prüfung hinaus schaffen, haben wir zumindest einige Daten, aber das Token 132 00:11:28,810 --> 00:11:29,950 ist möglicherweise immer noch ungültig. 133 00:11:30,370 --> 00:11:39,980 Wir haben also natürlich das Token, die Benutzer-ID und das Ablaufdatum, die wir aus den transformierten Daten nach dieser 134 00:11:40,520 --> 00:11:42,770 Zeile extrahieren können, hier 135 00:11:43,600 --> 00:11:46,860 mit dieser Objektzerstörungssyntax, und dies sind 136 00:11:46,870 --> 00:11:54,580 die drei Daten mit den drei exakt gleichen Namen, die ich speichere es hier in der 137 00:11:54,580 --> 00:11:56,400 auth. js Datei. Hier 138 00:11:56,410 --> 00:12:00,700 haben wir also ein Objekt mit einem Token, einer 139 00:12:00,700 --> 00:12:03,000 Benutzer-ID und einem Ablaufdatum. 140 00:12:03,010 --> 00:12:08,580 Das speichern wir im asynchronen Speicher. Das kann ich hier abrufen. 141 00:12:08,610 --> 00:12:11,360 Jetzt müssen wir prüfen, ob das Token noch 142 00:12:11,460 --> 00:12:20,670 gültig ist. Dazu kann ich mein Ablaufdatum neu erstellen, indem ich ein neues Datum verwende und das Ablaufdatum übergebe, das eigentlich eine Zeichenfolge im ISO-Format ist. 143 00:12:20,670 --> 00:12:23,220 Jetzt können wir eine if-Prüfung hinzufügen 144 00:12:23,220 --> 00:12:27,270 und prüfen, ob Ablaufdatum, also das Datum, an dem das Token 145 00:12:27,270 --> 00:12:33,660 ungültig wird, wenn es kleiner oder gleich dem neuen Datum ist. Dies ist der aktuelle Zeitstempel, was bedeutet, 146 00:12:33,660 --> 00:12:39,570 dass das Ablaufdatum in der Vergangenheit liegt. Wenn dies in der Vergangenheit liegt, ist unser Token ungültig. 147 00:12:40,320 --> 00:12:45,300 Es ist auch ungültig, wenn wir kein Token finden können oder wenn 148 00:12:45,360 --> 00:12:51,900 wir keine Benutzer-ID finden können. Wenn eine der drei Bedingungen erfüllt ist, haben wir ein ungültiges Token 149 00:12:51,900 --> 00:12:54,550 oder eine ungültige Benutzer-ID oder ähnliches. 150 00:12:54,570 --> 00:12:58,700 In diesem Fall möchte ich auch zurückkehren 151 00:12:59,340 --> 00:13:05,640 und natürlich zum Authentifizierungsbildschirm navigieren. Wenn wir es über diese Prüfung hinaus schaffen, 152 00:13:05,700 --> 00:13:10,110 haben wir ein Token, eine Benutzer-ID und das Token ist noch gültig. 153 00:13:10,110 --> 00:13:17,720 Wenn du es hier schaffst, rufe ich Requisiten an. Navigation. Navigieren Sie im Shop, um zum Shop-Bildschirm 154 00:13:17,720 --> 00:13:21,020 zu gelangen. Außerdem muss ich den Benutzer anmelden. Dazu benötigen wir 155 00:13:21,030 --> 00:13:24,230 eine neue Aktion, da ich jetzt keine Anfrage senden möchte. 156 00:13:24,240 --> 00:13:29,900 Ich möchte nur einige Daten in Redux ändern. Also füge ich hier einen neuen 157 00:13:31,550 --> 00:13:44,200 Aktionsersteller hinzu, exportiere const authenticate, der möglicherweise meine Benutzer-ID und mein Token verwendet und dann zum Ändern meiner Daten in Redux verwendet wird. Dazu füge ich jetzt 158 00:13:44,200 --> 00:13:45,250 eine 159 00:13:45,250 --> 00:13:54,390 neue Aktionskennung hinzu, die mit einer Zeichenfolge authentifiziert wird Um hier zu authentifizieren und hier als Typauthentifizierung zu verwenden, hängen 160 00:13:55,290 --> 00:14:02,190 Sie meine Benutzer-ID an, die hier meine Benutzer-ID ist, und mein Token, das das Token, 161 00:14:02,190 --> 00:14:08,360 das ich als Argument erhalte, und jetzt möchte ich diese Authentifizierungsaktion hier auf 162 00:14:08,370 --> 00:14:09,600 dem Startbildschirm auslösen. 163 00:14:10,730 --> 00:14:15,950 Aber bevor ich das mache, können wir übrigens auch zum Aktionsersteller zurückkehren und 164 00:14:15,950 --> 00:14:22,520 am Ende der Anmeldung, anstatt meine eigene benutzerdefinierte Anmeldeaktion hier auszulösen, können wir auch die Authentifizierung senden 165 00:14:22,550 --> 00:14:23,390 und 166 00:14:23,510 --> 00:14:33,930 diese hier, diesen Aktionsersteller, ausführen und einfach resData weiterleiten. localId als userId und resData. idToken als Token 167 00:14:33,950 --> 00:14:40,040 und machen Sie dasselbe am Ende der Anmeldung. 168 00:14:40,040 --> 00:14:45,400 Jetzt habe ich diese beiden Flows tatsächlich kombiniert, weil am Ende das Gleiche passiert. Jetzt 169 00:14:45,560 --> 00:14:51,350 können wir im Reduzierer, im Authentifizierungsreduzierer, anstatt die Anmeldung und Anmeldung zu überprüfen, einfach die Authentifizierung importieren 170 00:14:51,350 --> 00:14:57,780 und diese Kennung hier verwenden. Werde die Anmeldung los und ich werde es nur auskommentieren, um es hier noch 171 00:14:57,800 --> 00:15:00,830 als Referenz zu leben, weil das gleiche passiert. 172 00:15:00,860 --> 00:15:05,980 Jetzt macht es also Sinn, es zu kombinieren, da wir es auch für diese automatische Anmeldung benötigen. 173 00:15:06,020 --> 00:15:11,090 Also hier versende ich es dann auch hier für die manuelle Anmeldung und die manuelle Anmeldung 174 00:15:11,090 --> 00:15:17,150 und natürlich können Sie damit jetzt, wenn Sie möchten, auch die Anmeldung und Anmeldung dieser beiden Kennungen hier loswerden, 175 00:15:17,150 --> 00:15:20,200 weil wir dies nicht tun benutze sie nicht mehr. 176 00:15:20,390 --> 00:15:24,380 Aber damit, zurück zum Startbildschirm, können wir dies jetzt 177 00:15:24,600 --> 00:15:34,480 auch versenden. Dazu müssen Sie nur noch den Versand aus React Redux importieren und die Aktion importieren. Importieren Sie also alles als Authentifizierungsaktionen, möglicherweise aus 178 00:15:34,490 --> 00:15:41,650 dem Speicherordner, aus dem Aktionsordner und von der Authentifizierungsdatei dort und dann hier am Anfang erhalten Sie Zugriff 179 00:15:41,650 --> 00:15:43,190 auf die Versandfunktion, 180 00:15:43,270 --> 00:15:49,590 indem Sie use dispatch aufrufen. Wenn dies verfügbar ist, können wir den Versand als Abhängigkeit hinzufügen, 181 00:15:49,800 --> 00:15:55,230 dies wird sich jedoch nie ändern, sodass der Effekt niemals erneut ausgeführt wird 182 00:15:55,240 --> 00:16:01,330 und hier, nachdem ich zum Shop navigiert habe, möchte ich jetzt auch Authentifizierungsaktionen auslösen, um 183 00:16:01,450 --> 00:16:10,510 die extrahierte Benutzer-ID zu authentifizieren und weiterzuleiten, also dieses Feld hier und das extrahierte Token, also dieses Feld, das ich von meinem asynchronen 184 00:16:10,510 --> 00:16:19,150 Speicher erhalten habe und das mich jetzt automatisch anmelden sollte . Das war viel Arbeit, mal sehen, 185 00:16:19,150 --> 00:16:24,310 ob das funktioniert. Wenn ich dies neu lade, lande ich hier auf dem 186 00:16:24,340 --> 00:16:27,010 Anmeldebildschirm, da derzeit keine gültigen Token im asynchronen Speicher gespeichert sind. 187 00:16:27,880 --> 00:16:37,510 Wenn ich mich jetzt hier anmelde, werde ich weitergeleitet. Wenn ich jetzt neu lade, lande ich wieder hier und das ist großartig, denn 188 00:16:37,510 --> 00:16:43,560 jetzt bedeutet dies, dass dies zu funktionieren scheint und das Token gespeichert ist. 189 00:16:43,730 --> 00:16:48,230 Jetzt wäre es natürlich schön, wenn wir uns auch abmelden könnten, denn im Moment gibt es keine Möglichkeit, 190 00:16:48,230 --> 00:16:49,070 dies zu tun.