Lingara Lingara Documentación Guías API Bibliotecas Apps Crear Aplicación web
Idioma: Español

Autenticación

Esta página está traducida del inglés. Si ambas difieren, la página en inglés es la correcta. Leer la página en inglés

Creas un cliente con el ID de cliente y el secreto de cliente de un cliente OAuth. La biblioteca hace el resto. Nunca te pide un token de acceso.

Lo que la biblioteca hace por ti

  • Un único intercambio, compartido. La primera llamada que necesita un token intercambia tus credenciales por uno. Si varias llamadas empiezan a la vez, todas esperan a ese mismo intercambio en lugar de iniciar cada una el suyo.
  • En caché hasta que casi caduca. El token se reutiliza hasta 60 segundos antes de que caduque, y luego se sustituye en la siguiente llamada. Nada se renueva en segundo plano, así que un proceso inactivo no hace ninguna petición.
  • Un reintento ante un 401. Si la API rechaza un token, la biblioteca lo olvida, obtiene uno nuevo y repite la llamada una vez. Un segundo 401 se lanza como error de API.
  • Un intercambio acotado. Una petición de token que no recibe respuesta falla a los 30 segundos, para que un endpoint de tokens lento no pueda retener a todos los llamadores.
  • Nada que filtrar. El secreto de cliente y cada token de acceso aparecen como [REDACTED] en los registros, la salida de depuración y los mensajes de error.

Las operaciones que no necesitan token, como listar las versiones de la API, nunca envían uno, así que un cliente creado sin credenciales puede llamarlas igualmente.

Guarda el secreto en tu servidor

Un secreto de cliente identifica a tu aplicación, no a tus usuarios. Guárdalo en la configuración de tu servidor o en tu almacén de secretos, y nunca lo envíes a un navegador ni a una aplicación móvil.

Lenguaje del ejemplo de código

TypeScript

import { Lingara } from "@lingara/api";

const client = new Lingara({
  clientId: process.env.LINGARA_CLIENT_ID!,
  clientSecret: process.env.LINGARA_CLIENT_SECRET!,
});

Rust

use lingara::Client;

let client = Client::builder()
    .client_credentials(std::env::var("LINGARA_CLIENT_ID")?, std::env::var("LINGARA_CLIENT_SECRET")?)
    .build()?;

Go

import (
	"os"

	lingara "github.com/Spinning-Cat-Studios/lingara_api_clients/go"
)

client, err := lingara.New(
	lingara.WithClientCredentials(os.Getenv("LINGARA_CLIENT_ID"), os.Getenv("LINGARA_CLIENT_SECRET")),
)
if err != nil {
	return nil, err
}

Java

import com.getlingara.client.LingaraClient;

LingaraClient client =
    LingaraClient.builder()
        .clientCredentials(
            System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
        .build();

Kotlin

import com.getlingara.kotlin.LingaraClient

val client =
    LingaraClient {
        clientCredentials(System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
    }

Ruby

require "lingara"

client = Lingara::Client.new(client_id: client_id, client_secret: client_secret)

PHP

use Lingara\Client;

$client = new Client(clientId: $clientId, clientSecret: $clientSecret);

Qué envuelve esta página