Lingara Lingara مستندات راهنماها API کتابخانه‌ها برنامه‌ها ساخت نسخهٔ وب
زبان: فارسی

احراز هویت

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم تفاوت داشته باشند، صفحهٔ انگلیسی درست است. خواندن صفحهٔ انگلیسی

کلاینت را با شناسه کلاینت و رمز کلاینتِ یک کلاینت OAuth می‌سازید. بقیه کار با کتابخانه است. هرگز از شما توکن دسترسی نمی‌خواهد.

کارهایی که کتابخانه برایتان انجام می‌دهد

  • یک مبادله، مشترک. نخستین فراخوانی‌ای که به توکن نیاز دارد، اعتبارنامه‌های شما را با یک توکن مبادله می‌کند. اگر چند فراخوانی هم‌زمان آغاز شوند، همه منتظر همان یک مبادله می‌مانند و هر کدام مبادله جداگانه‌ای آغاز نمی‌کند.
  • نگهداری در حافظه نهان تا نزدیک کهنگی. توکن تا 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);

آنچه این صفحه دربر می‌گیرد