Lingara Lingara Τεκμηρίωση Οδηγοί API Βιβλιοθήκες Εφαρμογές Δημιουργία Διαδικτυακή εφαρμογή
Γλώσσα: Ελληνικά

Αυθεντικοποίηση

Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα

Δημιουργείτε έναν client με το client ID και το client secret ενός OAuth client. Η βιβλιοθήκη κάνει τα υπόλοιπα. Δεν σας ζητά ποτέ access token.

Τι κάνει η βιβλιοθήκη για εσάς

  • Μία ανταλλαγή, κοινή. Η πρώτη κλήση που χρειάζεται token ανταλλάσσει τα διαπιστευτήριά σας με ένα. Αν ξεκινήσουν πολλές κλήσεις ταυτόχρονα, όλες περιμένουν αυτή τη μία ανταλλαγή αντί να ξεκινήσει η καθεμία τη δική της.
  • Στην κρυφή μνήμη μέχρι να πλησιάσει τη λήξη. Το token επαναχρησιμοποιείται έως 60 δευτερόλεπτα πριν λήξει και έπειτα αντικαθίσταται στην επόμενη κλήση. Τίποτα δεν ανανεώνεται στο παρασκήνιο, οπότε μια αδρανής διεργασία δεν κάνει κανένα αίτημα.
  • Μία επανάληψη σε 401. Αν το API απορρίψει ένα token, η βιβλιοθήκη το ξεχνά, φέρνει ένα νέο και επαναλαμβάνει την κλήση μία φορά. Ένα δεύτερο 401 εγείρεται ως σφάλμα API.
  • Μια ανταλλαγή με όριο. Ένα αίτημα token που δεν λαμβάνει απάντηση αποτυγχάνει μετά από 30 δευτερόλεπτα, ώστε ένα αργό endpoint token να μην μπορεί να κρατά σε αναμονή κάθε καλούντα.
  • Τίποτα για να διαρρεύσει. Το client secret και κάθε access token εμφανίζονται ως [REDACTED] σε logs, έξοδο αποσφαλμάτωσης και μηνύματα σφάλματος.

Οι λειτουργίες που δεν χρειάζονται token, όπως η λίστα των εκδόσεων του API, δεν στέλνουν ποτέ token, οπότε ένας client που δημιουργήθηκε χωρίς διαπιστευτήρια μπορεί και πάλι να τις καλεί.

Κρατήστε το secret στον server σας

Ένα client secret ταυτοποιεί την εφαρμογή σας, όχι τους χρήστες σας. Κρατήστε το στη διαμόρφωση ή στο χώρο αποθήκευσης μυστικών του server σας, και μην το στέλνετε ποτέ σε πρόγραμμα περιήγησης ή σε εφαρμογή για κινητά.

Γλώσσα παραδείγματος κώδικα

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

Τι περιβάλλει αυτή η σελίδα