Do czego służy ta instrukcja
Ten artykuł wyjaśnia, jak skonfigurować integrację aplikacji typu Native z REST API xSale (flow autoryzacji: Authorization Code + PKCE + Refresh Token). Ten typ jest przeznaczony dla aplikacji mobilnych i desktopowych, w których użytkownik za pierwszym razem loguje się interaktywnie.
W tym artykule znajdziesz
- kiedy wybrać integrację typu Native,
- jak przebiega logowanie i wymiana kodu na tokeny,
- jak odświeżać tokeny bez ponownego logowania użytkownika,
- na co zwrócić uwagę w bezpieczeństwie i diagnostyce.
Kiedy stosować
- gdy integracja działa w aplikacji mobilnej lub desktopowej,
- gdy użytkownik loguje się przez ekran logowania (redirect do Auth0),
- gdy aplikacja nie może bezpiecznie przechowywać
client_secret, - gdy potrzebujesz utrzymać sesję przez
refresh_token.
Ważne założenie
Klient otrzymuje gotowe dane konfiguracyjne z panelu xSale i wdraża je w swojej aplikacji.
Dane przekazywane klientowi
AUTH0_DOMAIN:login.futuriti.plAUTH0_CLIENT_ID: identyfikator uzyskany przez panel xSaleAUTH0_AUDIENCE:https://api.xsale.aiAUTH0_SCOPE:openid profile email xsale production offline_accessREDIRECT_URI: domyślniehttp://localhost:8400/callbackORGANIZATION_NAME: nazwa organizacji klienta np.Prezentacja_bfffa785-67b8-4a5f-a4e6-8410db057788
Przykład (Testowy klient)
Szybki przepis (krok po kroku)
- Skonfiguruj integracje RestAPI w xSale.
- Wykonaj logowanie flow Authorization Code + PKCE (bez
client_secret). - Wymień
authorization_codenaaccess_token,id_tokenirefresh_token. - Wywołuj xSale REST API z nagłówkami:
Authorization: Bearer {access_token}orazx-id-token: {id_token}. - Odświeżaj tokeny przez
grant_type=refresh_tokenbez ponownego logowania użytkownika.
Typowe problemy i jak je sprawdzić
- Brak przekierowania po logowaniu – sprawdź poprawność
redirect_uri. Jeśli problem się utrzymuje, zgłoś do xSale/Futuriti (weryfikacja callback po stronie Auth0). - invalid_grant – sprawdź
code_verifier, jednorazowość kodu i zgodnośćredirect_uri. - 401/403 mimo tokenu – sprawdź, czy wysyłasz oba nagłówki:
Authorizationorazx-id-token. - Brak refresh tokenu – sprawdź scope
offline_access; jeśli nadal brak, zgłoś do xSale/Futuriti (ustawienia tokenów w Auth0).
Szczegóły techniczne
Flow: „Authorization Code + PKCE + Refresh Token”
Rodzaj integracji, w której użytkownik loguje się interaktywnie (mobile/desktop), a aplikacja nie posiada client_secret. Po poprawnym logowaniu aplikacja otrzymuje access_token, id_token i opcjonalnie refresh_token. W xSale REST API wymagane są oba tokeny: access_token oraz id_token (przekazywany jako x-id-token).
Aplikacja generuje PKCE: code_verifier oraz code_challenge (S256), a następnie otwiera endpoint https://login.futuriti.pl/authorize z parametrami: response_type=code, client_id, redirect_uri, scope, audience, code_challenge, code_challenge_method=S256.
Po zalogowaniu Auth0 przekierowuje na REDIRECT_URI z parametrem code. Następnie aplikacja wykonuje wymianę kodu na tokeny przez POST https://login.futuriti.pl/oauth/token.
Przykładowe żądanie wysłane za pomocą CURL:
curl -X POST \
--url 'https://login.futuriti.pl/oauth/token' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"grant_type": "authorization_code",
"client_id": "{client_id}",
"code": "{authorization_code}",
"code_verifier": "{code_verifier}",
"redirect_uri": "{redirect_uri}"
}'
Po poprawnym przesłaniu danych serwer autoryzacyjny zwróci tokeny.
Przykładowa odpowiedź z serwera autoryzacyjnego:
JSON
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI...",
"id_token": "eyJodHRwczovL2Z1dHVyaXRpLnBsL3VzZXJf...",
"refresh_token": "eyJjdHkiOiJSZWZyZXNoVG9rZW4...",
"scope": "openid profile email xsale production offline_access",
"expires_in": 86400,
"token_type": "Bearer"
}
Do autoryzacji/uwierzytelnienia w xSale REST API potrzebne są oba tokeny – access_token i id_token.
Przykładowe wywołanie API:
curl -X GET \
--url 'https://api.xsale.ai/me' \
--header 'Authorization: Bearer {access_token}' \
--header 'x-id-token: {id_token}'
UWAGA! Tokeny powinny być przechowywane i odnawiane dopiero gdy to konieczne. Generowanie nowego tokena przed każdym requestem do xSale REST API może wyczerpać limity i spowodować odrzucenie żądań przez serwer autoryzacyjny.
Więcej pod adresem:
https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce
https://auth0.com/docs/secure/tokens/refresh-tokens/use-refresh-tokens