Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Buat Aplikasi web
Bahasa: Bahasa Indonesia

Autentikasi

Halaman ini diterjemahkan dari bahasa Inggris. Jika keduanya berbeda, halaman bahasa Inggris yang benar. Baca halaman bahasa Inggris

Anda membuat klien dengan ID klien dan secret klien dari sebuah klien OAuth. Pustaka mengurus sisanya. Pustaka tidak pernah meminta token akses dari Anda.

Apa yang dilakukan pustaka untuk Anda

  • Satu penukaran, dipakai bersama. Panggilan pertama yang membutuhkan token menukar kredensial Anda dengan sebuah token. Jika beberapa panggilan dimulai bersamaan, semuanya menunggu penukaran yang satu itu alih-alih masing-masing memulai penukaran sendiri.
  • Disimpan di cache sampai hampir basi. Token dipakai ulang sampai 60 detik sebelum kedaluwarsa, lalu diganti pada panggilan berikutnya. Tidak ada yang diperbarui di latar belakang, jadi proses yang diam tidak mengirim permintaan apa pun.
  • Satu percobaan ulang pada 401. Jika API menolak sebuah token, pustaka melupakannya, mengambil token baru, dan mengulang panggilan satu kali. 401 yang kedua dilempar sebagai error API.
  • Penukaran yang dibatasi waktu. Permintaan token yang tidak mendapat jawaban gagal setelah 30 detik, sehingga endpoint token yang lambat tidak bisa menahan semua pemanggil.
  • Tidak ada yang bocor. Secret klien dan setiap token akses dicetak sebagai [REDACTED] di log, keluaran debug, dan pesan error.

Operasi yang tidak membutuhkan token, seperti menampilkan daftar versi API, tidak pernah mengirimkannya, sehingga klien yang dibuat tanpa kredensial tetap dapat memanggilnya.

Simpan secret di server Anda

Secret klien mengidentifikasi aplikasi Anda, bukan pengguna Anda. Simpan di konfigurasi server atau penyimpanan secret Anda, dan jangan pernah mengirimkannya ke peramban atau aplikasi seluler.

Bahasa contoh kode

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

Yang dibungkus halaman ini