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

ما تغلّفه هذه الصفحة