Social inloggning — Zkrinet-plugin
På Zkrinet: lägg till blocket under Byggblock i panelen — ett klick, din egen kod rörs inte och en ögonblicksbild tas först. Installationsstegen nedan gäller om du kör PocketBase själv, till exempel efter en export.
Logga in med Google, GitHub, Apple, Microsoft, Facebook, Discord med flera. Testat mot PocketBase 0.40.4.
#Ärligt om vad som är vad
Själva inloggningen är PocketBase egen (OAuth2, ett trettiotal leverantörer). Pluginet slår på den, kopplar namn och profilbild från leverantören, och lägger till en kontroll som säger exakt vad som saknas. Det som brukar stoppa folk är inte koden — det är inställningarna hos Google & co. Därför är guiden nedan det viktigaste.
#Installera
Kopiera pb_hooks/ och pb_migrations/ in i projektet och starta om. Sätt Application URL under Settings till din riktiga adress (https).
#Kontrollen
GET /api/zk/social/kontroll (superuser)
Svarar med återkopplingsadressen du ska klistra in hos leverantören, vilka leverantörer som är tillagda, och varningar (saknad eller felaktig Application URL, http i stället för https, localhost, ingen leverantör tillagd).
#Lägg till en leverantör
- Hämta återkopplingsadressen från kontrollen. Den ser ut så här:
https://dinapp.se/api/oauth2-redirect - Skapa en app hos leverantören (nedan) och klistra in adressen som redirect URI / callback URL.
- Kopiera Client ID och Client secret till adminpanelen: Collections → users → ⚙ → OAuth2 → Add provider.
| Leverantör | Var du skapar appen | Fälla |
|---|---|---|
| console.cloud.google.com → APIs & Services → Credentials → OAuth client ID (Web) | Appen måste "publiceras" på OAuth consent screen, annars kan bara testanvändare logga in. | |
| GitHub | github.com → Settings → Developer settings → OAuth Apps | Enklast av alla. Bra att börja med. |
| Microsoft | portal.azure.com → App registrations | Välj vilka konton som får logga in (privat, jobb eller båda). |
| Discord | discord.com/developers → Applications → OAuth2 | — |
| Apple | developer.apple.com → Identifiers + Keys | Kräver betalt utvecklarkonto. Apple kräver dessutom Apple-inloggning i iPhone-appar som erbjuder annan social inloggning. Hemligheten är en nyckel som går ut var 6:e månad. |
| developers.facebook.com → My Apps | Fungerar bara för dig själv tills appen är verifierad som företagsapp (Business verification). |
#Knappen i din app
await pb.collection("users").authWithOAuth2({ provider: "google" })
Vilka leverantörer som är påslagna (med namn och logga) hämtar du utan inloggning:
const { oauth2 } = await pb.collection("users").listAuthMethods()
#Säkerhet
- Nycklarna ligger i PocketBase inställningar, aldrig i koden. Den publika listan över inloggningssätt visar aldrig hemligheterna (testat).
- PocketBase nekar själv en leverantör utan hemlighet.
- Kontrollen kräver superuser.