Descripción general
El OAuth de Bluesky se basa en AT Protocol y difiere considerablemente de los proveedores habituales de Socialite como GitHub o Google.Diferencias con OAuth convencional
Flujo de autenticación
Instalación y configuración
Crear la clave privada
Genera primero la clave privada. Este paso se puede hacer sin registrar nada en Bluesky..env.
En Bluesky no es necesario registrar
client_id ni client_secret. Basta con configurar la clave privada para poder usar la autenticación OAuth.Scopes OAuth por defecto
El paquete se configura con scopes OAuth por defecto que cubren tres casos de uso principales.- Login con Socialite — con
atproto,account:emaileinclude:app.bsky.authViewAllse habilita la autenticación del usuario y el acceso al correo. - Publicaciones — con
include:app.bsky.authCreatePostsyblob:*/*se permite crear publicaciones y subir imágenes/vídeos. - Notificaciones DM — con
rpc:chat.bsky.convo.sendMessageyrpc:chat.bsky.convo.getConvoForMembersse habilita el envío de DMs para notificaciones.
BLUESKY_OAUTH_SCOPE.
Desarrollo local
Como por defecto ya están configuradoshttp://localhost y http://127.0.0.1:8000/, no se necesita configuración adicional para desarrollo local.
Entorno de producción
Si existe la ruta con el nombrebluesky.oauth.redirect, no hace falta configurar .env. Si has cambiado el nombre de la ruta por defecto, configúralo aquí.
Configuración de rutas
Se recomienda que el nombre de la ruta de callback seabluesky.oauth.redirect. El paquete utiliza internamente este nombre.
Gestión del callback en desarrollo local
Durante el desarrollo local, la URL de callback de Bluesky se fija enhttp://127.0.0.1:8000/. Es cómodo redirigir a nivel de ruta.
Implementación del controlador
Información del usuario (OAuthSession)
Estos son los principales métodos delOAuthSession que puedes obtener desde $user->session.
Para ver todas las propiedades, usa
toArray().
Configuración de base de datos
Añade a la tablausers las columnas específicas de Bluesky. El DID es el identificador único del usuario en Bluesky.
Reutilización de OAuthSession
Puedes llamar a las APIs usando el OAuthSession guardado en la sesión.Refresco automático de tokens
Como el refresh token solo se puede usar una vez, tras cada refresco es imprescindible volver a guardarlo en la BD. Se utiliza el eventoOAuthSessionUpdated.
OAuthSessionRefreshing. En ese momento el refresh_token ya no es válido, así que es más seguro eliminarlo de la BD.
Trait WithBluesky
Si añades el traitWithBluesky al modelo User e implementas tokenForBluesky(), puedes obtener un cliente autenticado con $user->bluesky().
Personalizar client-metadata
El paquete define automáticamente las rutasbluesky.oauth.client-metadata y bluesky.oauth.jwks. Normalmente no hace falta cambiar nada, pero puedes personalizarlas con OAuthConfig.
Comportamiento sin autenticación
Si elOAuthSession es null o no hay refresh token, se lanza la excepción Unauthenticated y se redirige a la ruta login.
Source: docs/socialite.md