Überblick
Blueskys OAuth basiert auf dem AT Protocol und unterscheidet sich deutlich von gewöhnlichen Socialite-Providern wie GitHub oder Google.Unterschied zum normalen OAuth
Authentifizierungsfluss
Installation und Konfiguration
Privaten Schlüssel erstellen
Erzeugen Sie zunächst einen privaten Schlüssel. Das ist ohne Registrierung bei Bluesky möglich..env.
Bei Bluesky ist keine Registrierung eines
client_id oder client_secret erforderlich. Allein mit dem privaten Schlüssel können Sie die OAuth-Authentifizierung nutzen.Standard-OAuth-Scopes
Das Paket ist mit Standard-OAuth-Scopes vorkonfiguriert, die drei Hauptanwendungsfälle abdecken.- Socialite-Login – Aktiviert Nutzer-Authentifizierung und E-Mail-Zugriff über
atproto,account:email,include:app.bsky.authViewAll. - Posten – Erlaubt das Erstellen von Posts und das Hochladen von Bildern/Videos über
include:app.bsky.authCreatePostsundblob:*/*. - DM-Benachrichtigungen – Aktiviert das Versenden von DMs für Benachrichtigungen über
rpc:chat.bsky.convo.sendMessageundrpc:chat.bsky.convo.getConvoForMembers.
BLUESKY_OAUTH_SCOPE anpassen.
Lokale Entwicklung
Standardmäßig sindhttp://localhost und http://127.0.0.1:8000/ konfiguriert, sodass für die lokale Entwicklung keine zusätzliche Konfiguration nötig ist.
Produktivumgebung
Wenn der Routennamebluesky.oauth.redirect existiert, ist kein Eintrag in .env nötig. Wenn Sie den Standard-Routennamen ändern, konfigurieren Sie ihn.
Routen-Setup
Für die Callback-Route wird der Routennamebluesky.oauth.redirect empfohlen. Das Paket verwendet diesen Namen intern.
Callback-Handling in der lokalen Entwicklung
Während der lokalen Entwicklung ist die Callback-URL von Bluesky fest aufhttp://127.0.0.1:8000/ gesetzt. Es ist praktisch, das Routing dafür auf Route-Ebene vorzunehmen.
Controller-Implementierung
Nutzerinformationen (OAuthSession)
Die wichtigsten Methoden der über$user->session verfügbaren OAuthSession:
Alle Eigenschaften prüfen Sie mit
toArray().
Datenbank-Konfiguration
Fügen Sie der Tabelleusers Bluesky-spezifische Spalten hinzu. Die DID ist der eindeutige Identifier eines Bluesky-Nutzers.
Wiederverwendung der OAuthSession
Mit der in der Session gespeicherten OAuthSession können Sie APIs aufrufen.Automatisches Token-Refreshing
Da das Refresh-Token nur einmal verwendet werden kann, muss es nach dem Aktualisieren unbedingt erneut in der DB gespeichert werden. Verwenden Sie hierfür das EventOAuthSessionUpdated.
OAuthSessionRefreshing ausgelöst. Da das refresh_token ab diesem Zeitpunkt ungültig ist, sollten Sie es sicherheitshalber aus der DB entfernen.
Trait WithBluesky
Wenn Sie dem User-Modell den TraitWithBluesky hinzufügen und tokenForBluesky() implementieren, können Sie über $user->bluesky() einen authentifizierten Client abrufen.
Client-Metadata anpassen
Das Paket definiert automatisch die Routenbluesky.oauth.client-metadata und bluesky.oauth.jwks. Änderungen sind meist nicht nötig, mit OAuthConfig können Sie sie aber anpassen.
Verhalten ohne Authentifizierung
WennOAuthSession null ist oder kein Refresh-Token vorliegt, wird eine Unauthenticated-Exception ausgelöst und ein Redirect zur login-Route ausgeführt.
Source: docs/socialite.md