Lingara Lingara 說明文件 學習指南 API 函式庫 App 建立 網頁版
語言: 繁體中文

身分驗證

本頁譯自英文。如兩者有出入,以英文頁面為準。 閱讀英文頁面

你用一個 OAuth 用戶端的用戶端 ID 和用戶端密鑰來建立用戶端,其餘的都交給函式庫處理。它從不向你索取存取權杖。

函式庫替你做的事

  • 一次交換,共同使用。 第一個需要權杖的呼叫會用你的憑證換取一個權杖。如果多個呼叫同時開始,它們都會等待這同一次交換,而不是各自發起一次。
  • 快過期前都使用快取。 權杖會一直被重複使用,直到它到期前 60 秒,然後在下一次呼叫時被替換。背景中不會自動更新任何東西,所以閒置的程序不會發出任何請求。
  • 遇到 401 重試一次。 如果 API 拒絕了某個權杖,函式庫會捨棄它,取得一個新權杖,再把這次呼叫重做一次。第二次 401 會以 API 錯誤拋出。
  • 有時限的交換。 得不到回應的權杖請求會在 30 秒後失敗,因此緩慢的權杖端點不會拖住所有呼叫端。
  • 沒有可洩漏的東西。 用戶端密鑰和每一個存取權杖在記錄檔、除錯輸出和錯誤訊息中都會顯示為 [REDACTED]。

不需要權杖的操作(例如列出 API 版本)從不傳送權杖,所以沒有憑證建立的用戶端也能呼叫它們。

把密鑰留在你的伺服器上

用戶端密鑰識別的是你的應用程式,而不是你的使用者。請把它保存在伺服器的設定或密鑰儲存庫中,絕不要把它隨瀏覽器網頁或行動應用程式一起發布出去。

程式碼範例語言

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

本頁封裝的內容