Panoramica
L’OAuth di Bluesky è basato su AT Protocol e differisce sostanzialmente dai provider Socialite tipici come GitHub o Google.Differenze rispetto al normale OAuth
Flusso di autenticazione
Installazione e configurazione
Creazione della chiave privata
Prima genera la chiave privata. Puoi farlo senza registrarti su Bluesky..env.
Con Bluesky non è necessario registrare
client_id o client_secret. Puoi usare l’autenticazione OAuth con la sola configurazione della chiave privata.Scope OAuth predefiniti
Il pacchetto è configurato con scope OAuth predefiniti che coprono tre casi d’uso principali.- Login con Socialite — con
atproto,account:emaileinclude:app.bsky.authViewAllabilita l’autenticazione utente e l’accesso all’email - Post — con
include:app.bsky.authCreatePostseblob:*/*consente la creazione di post e l’upload di immagini/video - Notifiche DM — con
rpc:chat.bsky.convo.sendMessageerpc:chat.bsky.convo.getConvoForMembersabilita l’invio di messaggi diretti per le notifiche
BLUESKY_OAUTH_SCOPE.
Sviluppo locale
Per impostazione predefinita sono configuratihttp://localhost e http://127.0.0.1:8000/, quindi in sviluppo locale non serve nessuna configurazione aggiuntiva.
Ambiente di produzione
Se esiste una rotta chiamatabluesky.oauth.redirect, non serve configurare .env. Configuralo solo se hai cambiato il nome della rotta predefinito.
Configurazione delle rotte
Come nome della rotta di callback è consigliatobluesky.oauth.redirect. Il pacchetto usa questo nome internamente.
Gestione del callback in sviluppo locale
Durante lo sviluppo locale, l’URL di callback da Bluesky è fisso suhttp://127.0.0.1:8000/. È comodo smistarlo a livello di rotta.
Implementazione del controller
Informazioni utente (OAuthSession)
I metodi principali dell’OAuthSession ottenibile da $user->session sono i seguenti.
Per vedere tutte le proprietà usa
toArray().
Configurazione del database
Aggiungi alla tabellausers le colonne specifiche di Bluesky. Il DID è l’identificatore univoco dell’utente Bluesky.
Riutilizzo di OAuthSession
Puoi invocare le API usando l’OAuthSession salvato in sessione.Aggiornamento automatico del token
Il refresh token può essere usato una sola volta, quindi dopo l’aggiornamento devi risalvarlo obbligatoriamente in DB. Usa l’eventoOAuthSessionUpdated.
OAuthSessionRefreshing. A quel punto il refresh_token diventa invalido, quindi conviene rimuoverlo dal DB per sicurezza.
Trait WithBluesky
Aggiungendo il traitWithBluesky al model User e implementando tokenForBluesky(), puoi ottenere un client autenticato tramite $user->bluesky().
Personalizzazione del client-metadata
Il pacchetto definisce automaticamente le rottebluesky.oauth.client-metadata e bluesky.oauth.jwks. Di norma non serve modificare nulla, ma puoi personalizzarle tramite OAuthConfig.
Comportamento in assenza di autenticazione
SeOAuthSession è null o manca il refresh token, viene lanciata un’eccezione Unauthenticated e vieni reindirizzato alla rotta login.
Source: docs/socialite.md