Overzicht
OAuth bij Bluesky is gebaseerd op het AT Protocol en verschilt sterk van gewone Socialite-providers zoals GitHub en Google.Verschillen met gewone OAuth
De authenticatieflow
Installatie en configuratie
Een privésleutel maken
Genereer eerst een privésleutel. Dit kan zonder registratie bij Bluesky..env.
Bij Bluesky is het registreren van een
client_id of client_secret niet nodig. Alleen het instellen van de privésleutel is genoeg om OAuth-authenticatie te gebruiken.Standaard OAuth-scopes
Het pakket is geconfigureerd met standaard OAuth-scopes die drie belangrijke use-cases ondersteunen.- Socialite-login —
atproto,account:emaileninclude:app.bsky.authViewAllmaken gebruikersauthenticatie en toegang tot e-mail mogelijk - Posten —
include:app.bsky.authCreatePostsenblob:*/*staan het maken van posts en het uploaden van afbeeldingen en video’s toe - DM-notificaties —
rpc:chat.bsky.convo.sendMessageenrpc:chat.bsky.convo.getConvoForMembersmaken het versturen van directe berichten voor notificaties mogelijk
BLUESKY_OAUTH_SCOPE in te stellen.
Lokale ontwikkeling
Standaard zijnhttp://localhost en http://127.0.0.1:8000/ geconfigureerd, dus voor lokale ontwikkeling is geen extra configuratie nodig.
Productieomgeving
Als de routenaambluesky.oauth.redirect bestaat, is configuratie in .env niet nodig. Stel deze in als je de standaardroutenaam hebt gewijzigd.
Routeconfiguratie
Als routenaam voor de callbackroute wordtbluesky.oauth.redirect aanbevolen. Het pakket gebruikt deze naam intern.
Callbacks afhandelen bij lokale ontwikkeling
Tijdens lokale ontwikkeling staat de callback-URL van Bluesky vast ophttp://127.0.0.1:8000/. Het is handig om dit op routeniveau door te sturen.
Controller-implementatie
Gebruikersinformatie (OAuthSession)
De belangrijkste methods van deOAuthSession die je via $user->session krijgt.
Gebruik
toArray() om alle properties te bekijken.
Databaseconfiguratie
Voeg Bluesky-specifieke kolommen toe aan deusers-tabel. De DID is de unieke identifier van een Bluesky-gebruiker.
De OAuthSession hergebruiken
Je kunt de API aanroepen met een OAuthSession die je in de sessie hebt opgeslagen.Tokens automatisch verversen
Omdat een refresh-token maar één keer bruikbaar is, moet je het na het verversen altijd opnieuw in de database opslaan. Gebruik hiervoor hetOAuthSessionUpdated-event.
OAuthSessionRefreshing-event uitgestuurd. Op dat moment wordt het refresh_token ongeldig, dus het is veilig om het uit de database te verwijderen.
De WithBluesky-trait
Voeg deWithBluesky-trait toe aan het User-model en implementeer tokenForBluesky(); daarna krijg je met $user->bluesky() een geauthenticeerde client.
client-metadata aanpassen
Het pakket definieert automatisch de routesbluesky.oauth.client-metadata en bluesky.oauth.jwks. Normaal hoef je niets te wijzigen, maar je kunt aanpassingen doen met OAuthConfig.
Gedrag bij niet-geauthenticeerde gebruikers
Als deOAuthSession null is of er geen refresh-token is, wordt een Unauthenticated-exception gegooid en word je doorgestuurd naar de login-route.
Source: docs/socialite.md