Skip to main content

Overzicht

OAuth bij Bluesky is gebaseerd op het AT Protocol en verschilt sterk van gewone Socialite-providers zoals GitHub en Google.
De OAuth van Bluesky is fundamenteel anders geïmplementeerd dan andere Socialite-providers. Er wordt gebruikgemaakt van DPoP (Demonstrated Proof of Possession) en PAR (Pushed Authorization Requests)-endpoints. Een client_secret is niet nodig; in plaats daarvan gebruik je een privésleutel.

Verschillen met gewone OAuth

De authenticatieflow

Installatie en configuratie

Een privésleutel maken

Genereer eerst een privésleutel. Dit kan zonder registratie bij Bluesky.
Kopieer de uitgevoerde waarde naar .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.
  1. Socialite-loginatproto, account:email en include:app.bsky.authViewAll maken gebruikersauthenticatie en toegang tot e-mail mogelijk
  2. Posteninclude:app.bsky.authCreatePosts en blob:*/* staan het maken van posts en het uploaden van afbeeldingen en video’s toe
  3. DM-notificatiesrpc:chat.bsky.convo.sendMessage en rpc:chat.bsky.convo.getConvoForMembers maken het versturen van directe berichten voor notificaties mogelijk
Je kunt de scopes aanpassen door de omgevingsvariabele BLUESKY_OAUTH_SCOPE in te stellen.
Zie de AT Protocol Permission Requests-documentatie voor details over de beschikbare scopes.

Lokale ontwikkeling

Standaard zijn http://localhost en http://127.0.0.1:8000/ geconfigureerd, dus voor lokale ontwikkeling is geen extra configuratie nodig.

Productieomgeving

Als de routenaam bluesky.oauth.redirect bestaat, is configuratie in .env niet nodig. Stel deze in als je de standaardroutenaam hebt gewijzigd.

Routeconfiguratie

Als routenaam voor de callbackroute wordt bluesky.oauth.redirect aanbevolen. Het pakket gebruikt deze naam intern.

Callbacks afhandelen bij lokale ontwikkeling

Tijdens lokale ontwikkeling staat de callback-URL van Bluesky vast op http://127.0.0.1:8000/. Het is handig om dit op routeniveau door te sturen.

Controller-implementatie

Gebruikersinformatie (OAuthSession)

De belangrijkste methods van de OAuthSession die je via $user->session krijgt. Gebruik toArray() om alle properties te bekijken.

Databaseconfiguratie

Voeg Bluesky-specifieke kolommen toe aan de users-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.
In jobs, de console en andere plekken waar de Laravel-sessie niet beschikbaar is, bouw je de OAuthSession op met data uit de database.

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 het OAuthSessionUpdated-event.
Bij het starten van een refresh wordt ook het 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 de WithBluesky-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 routes bluesky.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 de OAuthSession null is of er geen refresh-token is, wordt een Unauthenticated-exception gegooid en word je doorgestuurd naar de login-route.
Laatst gewijzigd op 6 september 2026