Vue d’ensemble
L’OAuth de Bluesky repose sur AT Protocol et diffère considérablement des fournisseurs Socialite classiques comme GitHub ou Google.Différences avec l’OAuth classique
Flux d’authentification
Installation et configuration
Création de la clé privée
Commencez par générer une clé privée. Cela peut se faire sans inscription auprès de Bluesky..env.
Pour Bluesky, aucune inscription de
client_id ou client_secret n’est nécessaire. La simple configuration de la clé privée suffit pour utiliser l’authentification OAuth.Portées OAuth par défaut
Le package est configuré avec des portées OAuth par défaut prenant en charge trois cas d’usage principaux.- Connexion Socialite —
atproto,account:email,include:app.bsky.authViewAllpour activer l’authentification utilisateur et l’accès à l’e-mail - Publication —
include:app.bsky.authCreatePostsetblob:*/*pour permettre la création de publications et l’upload d’images/vidéos - Notifications DM —
rpc:chat.bsky.convo.sendMessageetrpc:chat.bsky.convo.getConvoForMemberspour activer l’envoi de messages directs à des fins de notification
BLUESKY_OAUTH_SCOPE.
Développement local
Par défaut,http://localhost et http://127.0.0.1:8000/ sont configurés, donc aucune configuration supplémentaire n’est nécessaire pour le développement local.
Environnement de production
Si la route nomméebluesky.oauth.redirect existe, aucune configuration dans .env n’est nécessaire. Configurez-la si vous avez modifié le nom de route par défaut.
Configuration des routes
Il est recommandé de nommer la route de callbackbluesky.oauth.redirect. Le package utilise ce nom en interne.
Gestion du callback en développement local
Pendant le développement local, l’URL de callback de Bluesky est fixée àhttp://127.0.0.1:8000/. Il est pratique de faire le routage au niveau des routes.
Implémentation du contrôleur
Informations utilisateur (OAuthSession)
Voici les principales méthodes de l’OAuthSession obtenues via $user->session.
Utilisez
toArray() pour consulter toutes les propriétés.
Configuration de la base de données
Ajoutez les colonnes spécifiques à Bluesky à la tableusers. Le DID est l’identifiant unique de l’utilisateur Bluesky.
Réutilisation de l’OAuthSession
Vous pouvez appeler l’API en utilisant l’OAuthSession enregistrée en session.Rafraîchissement automatique du token
Le refresh token ne pouvant être utilisé qu’une seule fois, il faut impérativement le réenregistrer en base après un rafraîchissement. Utilisez l’événementOAuthSessionUpdated.
OAuthSessionRefreshing est également émis. À ce moment, le refresh_token devient invalide. Il est plus sûr de le supprimer de la base à cet instant.
Trait WithBluesky
Si vous ajoutez le traitWithBluesky au modèle User et implémentez tokenForBluesky(), vous pouvez obtenir un client authentifié via $user->bluesky().
Personnalisation de client-metadata
Le package définit automatiquement les routesbluesky.oauth.client-metadata et bluesky.oauth.jwks. Aucune modification n’est habituellement nécessaire, mais vous pouvez personnaliser via OAuthConfig.
Comportement en cas de non-authentification
Si l’OAuthSession est null ou qu’il n’y a pas de refresh token, une exception Unauthenticated est levée et l’utilisateur est redirigé vers la route login.
Source: docs/socialite.md