Lingara Lingara Dokumentasyon Mga gabay API Mga library Mga app Gumawa Web app
Wika: Filipino

Pagpapatunay

Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles

Gumagawa ka ng client gamit ang client ID at client secret ng isang OAuth client. Ang library na ang bahala sa iba pa. Hindi ka nito kailanman hihingan ng access token.

Ang ginagawa ng library para sa iyo

  • Isang palitan, pinagsasaluhan. Ang unang tawag na nangangailangan ng token ang magpapalit ng iyong mga credential para makakuha ng isa. Kung sabay-sabay na magsimula ang ilang tawag, lahat sila ay maghihintay sa iisang palitang iyon sa halip na magsimula ng kani-kaniyang palitan.
  • Naka-cache hanggang halos luma na. Ginagamit muli ang token hanggang 60 segundo bago ito mag-expire, at pinapalitan ito sa susunod na tawag. Walang nire-refresh sa background, kaya walang ipinapadalang request ang prosesong nakatigil.
  • Isang retry sa 401. Kapag tinanggihan ng API ang isang token, kinakalimutan ito ng library, kumukuha ng bago at inuulit nang isang beses ang tawag. Ang ikalawang 401 ay ibinabato bilang API error.
  • Palitang may hangganan. Ang token request na walang natanggap na sagot ay nabibigo pagkalipas ng 30 segundo, kaya hindi kayang pigilan ng mabagal na token endpoint ang lahat ng tumatawag.
  • Walang tatagas. Ang client secret at bawat access token ay ipinapakita bilang [REDACTED] sa mga log, debug output at mensahe ng error.

Ang mga operasyong hindi nangangailangan ng token, gaya ng paglilista ng mga bersyon ng API, ay hindi kailanman nagpapadala nito, kaya matatawag pa rin ang mga ito ng client na ginawa nang walang credential.

Itago ang secret sa iyong server

Ang client secret ay tumutukoy sa iyong application, hindi sa iyong mga user. Itago ito sa configuration o secret store ng iyong server, at huwag itong kailanman isama sa isang browser o mobile app.

Wika ng halimbawang code

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);

Ang binabalot ng pahinang ito