Integraciones de terceros
Utilice el flujo de autorización de estilo OAuth para conectar cuentas de organizador y leer datos de transmisión de eventos desde API con un token de portador con alcance.
1) Redirigir a los usuarios para que los autoricen
Envíe organizadores a Kagibag con el nombre de su aplicación, la URL de devolución de llamada y un valor de estado aleatorio.
GET /oauth/authorize?client_name=MyApp&redirect_uri=https%3A%2F%2Fexample.com%2Fkagibag%2Fcallback&state=csrf_token_1232) Manejar los resultados de la devolución de llamada
Kagibag redirige a tu redirect_uri con una carga útil de token o una carga útil de error.
Parámetros de consulta exitosa
token: Token de portador de Sanctum con alcance aevents:readevent_feed_url: URL del punto final del feed del organizadorstate: Valor repetido de su solicitud original
Parámetros de consulta de error
error:access_deniederror_description: Motivo (por ejemplo, usuario denegado o no organizador)state: Valor repetido de su solicitud original
3) Leer los feeds de eventos del organizador
Utilice el token devuelto como token de portador en los puntos finales del evento del organizador.
curl -H "Authorization: Bearer {token}" "{event_feed_url}"curl -H "Authorization: Bearer {token}" "https://app.kagibag.test/api/v1/organizer/{team_slug}/events/{event_slug}"GET /api/v1/organizer/{team:slug}/eventsDetalle del evento:GET /api/v1/organizer/{team:slug}/events/{slug}Alcance de la autorización: Los tokens solo pueden acceder al feed del equipo del organizador emisor.Lista de verificación de seguridad
- Genere un estado aleatorio único por solicitud de autorización y verifíquelo al devolver la llamada.
- Utilice URL de devolución de llamada HTTPS solo en producción.
- Trate el token como un secreto y guárdelo cifrado en reposo.
- Nunca exponga tokens en registros, análisis o almacenamiento del navegador del lado del cliente cuando sea posible evitarlo.
- Maneje las devoluciones de llamadas denegadas/errores con elegancia y solicite a los usuarios que vuelvan a intentarlo si es necesario.
Ejemplo de controlador de devolución de llamada
if (query.error) {
assert(query.state === session.oauth_state);
return showError(query.error_description ?? 'Authorization failed');
}
assert(query.state === session.oauth_state);
saveKagibagToken(query.token);
saveKagibagFeedUrl(query.event_feed_url);
return syncEventsNow();