Lingara Lingara Documentação Guias API Bibliotecas Aplicações Criar Aplicação web
Idioma: Português

Autenticação

Esta página é uma tradução do inglês. Se as duas diferirem, a página em inglês é a correta. Ler a página em inglês

Cria um cliente com o ID de cliente e o segredo de cliente de um cliente OAuth. A biblioteca trata do resto. Nunca lhe pede um token de acesso.

O que a biblioteca faz por si

  • Uma única troca, partilhada. A primeira chamada que precisa de um token troca as suas credenciais por um. Se várias chamadas começarem ao mesmo tempo, todas esperam por essa mesma troca em vez de cada uma iniciar a sua.
  • Em cache até estar quase a expirar. O token é reutilizado até 60 segundos antes de expirar e depois substituído na chamada seguinte. Nada é renovado em segundo plano, pelo que um processo inativo não faz pedidos.
  • Uma nova tentativa perante um 401. Se a API rejeitar um token, a biblioteca descarta-o, obtém um novo e repete a chamada uma vez. Um segundo 401 é lançado como erro da API.
  • Uma troca limitada. Um pedido de token que não obtém resposta falha ao fim de 30 segundos, para que um endpoint de tokens lento não consiga reter todos os chamadores.
  • Nada a divulgar. O segredo de cliente e cada token de acesso aparecem como [REDACTED] nos registos, na saída de depuração e nas mensagens de erro.

As operações que não precisam de token, como listar as versões da API, nunca enviam um, pelo que um cliente criado sem credenciais pode chamá-las na mesma.

Mantenha o segredo no seu servidor

Um segredo de cliente identifica a sua aplicação, não os seus utilizadores. Guarde-o na configuração do seu servidor ou no seu cofre de segredos, e nunca o envie para um navegador nem para uma aplicação móvel.

Linguagem do exemplo 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);

O que esta página encapsula