Autentifikacija
Svaki poziv Integration API-ja nosi token u zaglavlju Authorization. Token pripada korisniku vaše aplikacije i važi za celu aplikaciju: čita i upisuje podatke te aplikacije i ništa drugo.
Kako do tokena#
U Admin-u otvorite User › Tokens i napravite token za sistem koji će ga koristiti. Za svaki sistem koji razgovara sa nama, za ERP, magacin ili kasu, koristite poseban token, da biste jedan mogli da opozovete bez diranja ostalih.
Token je ključ podataka vaše aplikacije. Čuvajte ga na serveru, u promenljivoj okruženja ili skladištu tajni. Nikad ga ne stavljajte u pregledač, mobilnu aplikaciju ili repozitorijum. Aplikacije i sajtovi koje koriste vaši kupci pozivaju Storefront API sa sopstvenom sesijom.
Šaljite ga uz svaki zahtev#
Token stavite u zaglavlje Authorization, posle reči Bearer:
- Napišite
Bearerbaš tako, pa jedan razmak i token. - Pošaljite jedno zaglavlje
Authorization. Zahtev sa dva tretira se kao da nema nijedno. - Token ide samo u zaglavlje, nikad u URL ili telo zahteva.
Basic autentifikacija ključevima aplikacije ne prihvata se na Integration API-ju. U javnom API-ju njome se samo pokreće sesija prodavnice.
curl "https://api.morffeus.com/api/v2/warehouses" \ -H "Authorization: Bearer $MORFFEUS_TOKEN"
const res = await fetch('https://api.morffeus.com/api/v2/warehouses', { headers: { Authorization: `Bearer ${process.env.MORFFEUS_TOKEN}` } });
$ch = curl_init('https://api.morffeus.com/api/v2/warehouses'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . getenv('MORFFEUS_TOKEN'), ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
{
"errors": {
"token": "API.Token.NotFound"
}
}
Šta token nosi#
Token se pravi za jednog korisnika jedne aplikacije. Identifikator aplikacije nikad ne šaljete: sve ispod dolazi iz tokena.
| Deo | Šta određuje |
|---|---|
| app | Čije podatke čitate i upisujete. Svaki poziv radi unutar ove aplikacije. |
| client | Firmu kojoj aplikacija pripada. |
| user | Čija prava važe tamo gde ih endpoint proverava. Na primer, GET /orders vraća samo porudžbine iz prodajnih kanala koje ovaj korisnik sme da vidi. |
| market, currency | Cene i valutu u odgovorima, na primer u GET /products. |
| language | Jezik prevedenih tekstova u odgovorima, na primer tekstova proizvoda u GET /products. |
Istek i opoziv#
Tokeni ističu. Koliko token traje podešava se za vašu aplikaciju; kad istekne, pozivi vraćaju 401 sa expired, a vi pravite novi u User › Tokens.
Opoziv tokena u User › Tokens zaustavlja ga odmah. Svaki token proveravamo pri svakom pozivu, pa opozvani token od sledećeg zahteva vraća API.Token.NotFound.
Kad je token odbijen#
Odbijeni token dobija 401 i telo koje navodi polje token. Vrednost kaže zašto:
| errors.token | Zašto |
|---|---|
| API.Authorization.Error | Nema zaglavlja Authorization, ili ih ima više. |
| Invalid authorization format | Zaglavlje nije Bearer, jedan razmak i token. |
| invalid, API.Token.Invalid | Token nije naš, ili je usput skraćen ili izmenjen. |
| expired | Tokenu je istekao rok. Napravite novi. |
| API.Token.NotFound | Token je opozvan. |
| API.Authorization.App.NotFound | Basic autentifikacija ključevima koji ne pripadaju nijednoj aplikaciji. |
| API.Autorization.Unauthorized | Token je ispravan, ali se ovde ne prihvata, na primer gostujuća sesija prodavnice, ili Basic autentifikacija pravim ključevima aplikacije. Ključ je u API-ju napisan baš ovako. |
Sve ostale greške imaju isti omotač sa drugim poljem. Pogledajte Greške.
Pozivi prodavnice#
Storefront API ne koristi ove tokene. Aplikacija ili sajt koji koriste vaši kupci pokreće sesiju ključevima aplikacije i prijavljuje kupca; svaki poziv zatim nosi token te sesije u istom zaglavlju Authorization: Bearer. Pogledajte Sesije i prijava.
Povezano#
- Vaš prvi zahtev: token u praksi, od praznog terminala do izmene zaliha.
- Greške: omotač greške i statusni kodovi koje koristimo.
- Osnovni URL i okruženja: kuda šaljete zahteve dok razvijate.