API pro přihlášení zákazníka
Kromě samotné hodnoty jsou důležité dvě vlastnosti:
Koncový bod pro přihlášení ověří přihlašovací údaje nakupujícího a po úspěšném ověření vrátí identityId – neprůhledný token relace, který e-shop uloží do souboru cookie a použije při následných voláních. Ztráta tokenu ukončí relaci; únik tokenu poskytuje držiteli stejný přístup, jaký má nakupující, dokud jej e-shop nezruší.
Toto je jeden ze tří koncových bodů integrace e-shopu pro zákaznické účty, spolu s API pro registraci zákazníka a API pro informace o zákaznickém účtu. Koncepty za kontakty, registrovanými účty a hosty naleznete v článku Kontakty.
Koncový bod
POST https://api.bizkithub.com/contact/v1/login
Ověření probíhá pomocí standardního parametru apiKey (viz článek API klíč).
Tělo požadavku
| Vlastnost | Typ | Význam |
|---|---|---|
email |
string |
E-mailová adresa nakupujícího v záznamu kontaktu. |
password |
string |
Heslo nakupujícího. |
Odpověď
export type PublicCustomerLoginResponse =
| { success: false; errorCode: CustomerLoginErrorCode; message: string }
| { success: true; identityId: string };
export const CUSTOMER_LOGIN_ERROR_CODE = {
E001: 'Customer login failed.',
E002: 'Customer e-mail does not exist.',
E003: 'Customer have not a registered account.',
E004: 'Wrong e-mail or password.',
E005: 'Customer account has been banned.',
E006: 'Too many login attempts.',
E007: 'Customer mail has not been authorized.',
} as const;
export type CustomerLoginErrorCode = keyof typeof CUSTOMER_LOGIN_ERROR_CODE;
Chybové kódy
| Kód | Zpráva | Význam |
|---|---|---|
E001 |
Přihlášení zákazníka selhalo. | Obecné selhání – typicky chyba na straně platformy. |
E002 |
E-mail zákazníka neexistuje. | Neexistuje žádný kontakt se zadanou e-mailovou adresou. |
E003 |
Zákazník nemá registrovaný účet. | Kontakt existuje, ale nikdy se nezaregistroval – není nastaveno heslo. Nasměrujte nakupujícího na koncový bod pro registraci. |
E004 |
Chybný e-mail nebo heslo. | Přihlašovací údaje se neshodují. V praxi to téměř vždy znamená špatné heslo, protože E002 pokrývá případ chybějícího e-mailu. |
E005 |
Zákaznický účet byl zablokován. | Přihlášení je zablokováno obchodníkem. |
E006 |
Příliš mnoho pokusů o přihlášení. | Ochrana proti hádání hesla pomocí omezení rychlosti. Zkuste to znovu po uplynutí doby ochlazení. |
E007 |
E-mail zákazníka nebyl autorizován. | Registrace byla zahájena, ale potvrzovací e-mail nebyl nikdy kliknut. Vyzvěte nakupujícího k dokončení ověření. |
Zachování relace
Hodnota identityId je pro e-shop neprůhledná – jejím jediným účelem je být znovu použita při následných voláních API. V prostředí Node.js (Next.js, čistý Express) je doporučeným vzorem uložit ji jako soubor cookie první strany, pouze HTTP:
export const AUTH_COOKIES_NAME = 'auth-id';
cookies().set({
name: AUTH_COOKIES_NAME,
value: response.identityId || '',
secure: true,
httpOnly: true,
path: '/',
expires: new Date(new Date().setMonth(new Date().getMonth() + 3)),
});
Kromě samotné hodnoty jsou důležité dvě vlastnosti:
httpOnly: true— JavaScript na e-shopu nemůže číst token, což zmírňuje dopad chyby XSS.secure: true— token je odesílán pouze přes HTTPS.
Nastavte expiraci souboru cookie tak, aby odpovídala životnosti relace platformy. Platforma udržuje přihlašovací relaci platnou po dobu tří měsíců jako výchozí pro trvalé přihlášení; kratší expirace souboru cookie je v pořádku pro kratší doby nečinnosti, delší nikoli – relace na straně serveru již bude neplatná.
Pokud váš e-shop není Node.js (například nativní mobilní aplikace nebo backend napsaný v jiném jazyce), uložte token do jakéhokoli zabezpečeného úložiště, které platforma nabízí – jedinou neměnnou podmínkou je, že jej nesmíte ztratit a nesmíte jej vystavit nedůvěryhodným stranám.
Zpracování odhlášení
Ve veřejném API neexistuje žádný vyhrazený koncový bod pro odhlášení; odhlášení je zodpovědností e-shopu. Odstraňte lokální soubor cookie a, pokud chcete zrušit i relaci na straně platformy, požádejte operátora o její zrušení z administrace Kontaktů (akce Zneplatnit relace). Následný požadavek s zrušeným tokenem obdrží { loggedIn: false } z API pro informace o zákaznickém účtu.
Související články
- API pro registraci zákazníka — vytvoření nového zákaznického účtu.
- API pro informace o zákaznickém účtu — načtení kompaktního profilu po přihlášení nakupujícího.
- Kontakty — průvodce administrací.
- API klíč — jak ověřit požadavek.
- Chybové kódy — konvence chybových kódů platformy.