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

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