Skip to main content

Vue d’ensemble

L’OAuth de Bluesky repose sur AT Protocol et diffère considérablement des fournisseurs Socialite classiques comme GitHub ou Google.
L’implémentation OAuth de Bluesky est fondamentalement différente des autres fournisseurs Socialite. Elle utilise les endpoints DPoP (Demonstrated Proof of Possession) et PAR (Pushed Authorization Requests). Le client_secret n’est pas nécessaire ; une clé privée est utilisée à la place.

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.
Copiez la valeur affichée dans votre fichier .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.
  1. Connexion Socialiteatproto, account:email, include:app.bsky.authViewAll pour activer l’authentification utilisateur et l’accès à l’e-mail
  2. Publicationinclude:app.bsky.authCreatePosts et blob:*/* pour permettre la création de publications et l’upload d’images/vidéos
  3. Notifications DMrpc:chat.bsky.convo.sendMessage et rpc:chat.bsky.convo.getConvoForMembers pour activer l’envoi de messages directs à des fins de notification
Vous pouvez personnaliser les portées en définissant la variable d’environnement BLUESKY_OAUTH_SCOPE.
Pour plus de détails sur les portées disponibles, consultez la documentation AT Protocol Permission Requests.

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ée bluesky.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 callback bluesky.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 table users. 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.
Lorsque la session Laravel n’est pas disponible (Job, Console, etc.), récupérez les données depuis la base de données pour reconstituer l’OAuthSession.

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énement OAuthSessionUpdated.
Au début du rafraîchissement, l’événement 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 trait WithBluesky 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 routes bluesky.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.
Dernière modification le 13 juillet 2026