Heute Nachmittag wollte ich doch nur kurz etwas machen. Ich wollte es meinem Blog ermöglichen, sich mit Google anzumelden. Ich dachte, das geht schnell. Zudem ich nutze PocketBase, welche OAuth u. a. auch für Google unterstützt. Außerdem gibt es bestimmt viele Tutorials im Internet und eine gute Dokumentation. Jetzt ist es 22:30 und es funktioniert, auch wenn es nicht schön ist.
1. Hürde: Etwas übersehen
Ich fing an, nach der Dokumentation und einem Tutorial, mich bei Google anzumelden und die notwendigen Daten in PocketBase zu hinterlegen. Problem: Wenn ich Links zu den OAuth Anbietern von der Datenbank anfordere, kommt keine davon zurück.
Also fing ich an, nach dem Problem zu suchen. Vielleicht sind die Werte falsch. Also erstelle ich neue Credentials und kopierte diese. Immer noch das Problem.
Weiter startete ich PocketBase neu, denn wer weiß was neu starten schon alles gebracht hat. Keine Änderung.
Ausprobiert, mit Chrome, mit Firefox, mit Curl direkt auf dem Server. Immer noch dieselbe Antwort.
Also in den Logs nachgesehen. Dort sind die Anfragen hinterlegt, aber alle fehlerfrei.
PocketBase und die JS Library aktualisiert. Kein Unterschied.
Gegoogelt, keine Lösung. Auf GitHub fast ein Issue geschrieben, da habe ich es doch gesehen. Ich hatte einmal in meiner User Table OAuth2 deaktiviert. Ohne dass ich mich erinnern konnte, dass es diese Einstellung überhaupt gibt.
2. Hürde: Google gibt einen Fehler
Also nun, mit immer einem aktuellen Link zum Google Log-in ging es weiter. Aber halt. Google lässt mich nicht anmelden. Fehler, dass der Client nicht autorisiert ist.
Als Erstes nachgesehen, ob die Redirect-URL stimmt. Das tut sie.
Als Nächstes, ob die Hosts zugelassen sind. Das waren sie auch.
Überprüft, ob die URL Sinn ergibt. Ebenso.
Neues Client-Secret erstellt. Immer noch nicht gelöst.
Ins Tutorial geschaut, ob alles stimmt. Den Code aus dem Tutorial heruntergeladen und ausprobiert. Immer dasselbe Problem.
Also noch mal weiter zurück im Tutorial zu Erstellung des AuthClients bei Google. Neue Client-ID und neues Client-Secret. Alles funktioniert. Also fast.
3. Hürde Nutzer angemeldet lassen
Jetzt also zurück auf meiner Seite, mit den Daten von Google. Aber der Nutzer ist nicht sofort angemeldet. Also mit Debugging nachgesehen, ob ein Nutzer überhaupt erkannt wird. Das wird er, mit ID und allem anderen, zumindest auf der Seite, auf der der Server die Antwort von Google verarbeitet.
Aber dann weitergeleitet und alles weg.
Nach einigen Versuchen kam ich auf die dann den Nutzer in die Cookies zu schreiben und auch wieder zu laden. Das funktioniert nun also auch.
Fazit
Es kommt immer wieder vor, dass die Probleme klein und unauffällig sind. Verwendet man dann noch Technologien, die industriell nicht weitverbreitet sind, so sind die Antworten auch nicht in der ersten Google Suche. Aber das gehört dazu. Jetzt funktioniert alles und ich kann weiter arbeiten.
Für euch gibt es also die Tage die Möglichkeit sich mit Google anzumelden, aber ich kümmere mich noch darum, dass die Accounts auch mit bestehenden Accounts verbunden werden können.
Comments