Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Apl web
Bahasa: Bahasa Melayu

Pengesahan

Halaman ini diterjemahkan daripada bahasa Inggeris. Jika kedua-duanya berbeza, halaman bahasa Inggeris adalah yang betul. Baca halaman bahasa Inggeris

Anda mencipta klien dengan ID klien dan rahsia klien bagi sebuah klien OAuth. Pustaka menguruskan selebihnya. Ia tidak pernah meminta token akses daripada anda.

Apa yang dilakukan pustaka untuk anda

  • Satu pertukaran, dikongsi. Panggilan pertama yang memerlukan token menukar kelayakan anda dengan sebuah token. Jika beberapa panggilan bermula serentak, semuanya menunggu pertukaran yang satu itu dan bukannya masing-masing memulakan pertukaran sendiri.
  • Disimpan dalam cache sehingga hampir basi. Token digunakan semula sehingga 60 saat sebelum ia tamat tempoh, kemudian diganti pada panggilan seterusnya. Tiada apa-apa yang diperbaharui di latar belakang, jadi proses yang terbiar tidak membuat sebarang permintaan.
  • Satu cubaan semula pada 401. Jika API menolak sebuah token, pustaka melupakannya, mengambil token baharu dan mengulangi panggilan sekali. 401 yang kedua dilontarkan sebagai ralat API.
  • Pertukaran yang terhad masanya. Permintaan token yang tidak mendapat jawapan gagal selepas 30 saat, jadi endpoint token yang perlahan tidak boleh menahan semua pemanggil.
  • Tiada apa-apa untuk bocor. Rahsia klien dan setiap token akses dicetak sebagai [REDACTED] dalam log, output nyahpepijat dan mesej ralat.

Operasi yang tidak memerlukan token, seperti menyenaraikan versi API, tidak pernah menghantarnya, jadi klien yang dicipta tanpa kelayakan masih boleh memanggilnya.

Simpan rahsia di pelayan anda

Rahsia klien mengenal pasti aplikasi anda, bukan pengguna anda. Simpan dalam konfigurasi pelayan atau stor rahsia anda, dan jangan sekali-kali menghantarnya ke pelayar atau aplikasi mudah alih.

Bahasa contoh kod

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

Perkara yang dibalut oleh halaman ini