Przejdź do treści

OAuth krok po kroku

Przepływ jest taki sam jak w Allegro — zmieniasz tylko adresy na https://api.allee.pl/auth/oauth/…. Obowiązkowe PKCE z metodą S256.

1. Przekierowanie sprzedawcy

Wygeneruj losowy code_verifier (43–128 znaków) i code_challenge = BASE64URL(SHA256(code_verifier)). Skieruj przeglądarkę sprzedawcy na:

curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/auth/oauth/authorize?response_type=code&client_id=36d6ed33acd3fc480a9270abe6421e9c&redirect_uri=https%3A%2F%2Fintegrator.example.com%2Fallee%2Fpowrot&state=st-7f3a9c&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&code_challenge_method=S256&scope=allegro%3Aapi%3Aprofile%3Aread%20allegro%3Aapi%3Asale%3Aoffers%3Aread%20allegro%3Aapi%3Asale%3Aoffers%3Awrite" \
  -H "Accept: text/html" \
  -w '\nHTTP %{http_code}\n'

Po kliknięciu „Zezwól” sprzedawca wraca na redirect_uri?code=…&state=…. Sprawdź, że state jest Twój.

redirect_uri porównujemy bajt w bajt z zarejestrowanym (ukośnik na końcu ma znaczenie). Zły adres daje stronę błędu bez przekierowania.

2. Wymiana kodu na tokeny

curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/auth/oauth/token" \
  -u "$ALLEE_CLIENT_ID:$ALLEE_CLIENT_SECRET" \
  -H "Accept: application/json" \
  --data-urlencode "grant_type=authorization_code" \
  --data-urlencode "code={kod_z_przekierowania}" \
  --data-urlencode "redirect_uri=https://integrator.example.com/allee/powrot" \
  --data-urlencode "code_verifier={code_verifier}" \
  -w '\nHTTP %{http_code}\n'

Kod jest jednorazowy i ważny 10 minut — nieudana wymiana też go zużywa. Zapisz scope z odpowiedzi: nieznane zakresy są po cichu pomijane.

3. Odświeżanie (rotacja)

Każde odświeżenie wydaje nową parę, a stary refresh przestaje działać. Ponowne użycie starego refresh tokenu poza 60-sekundowym oknem łaski unieważnia całą rodzinę tokenów (ochrona przed kradzieżą, RFC 9700) — odświeżaj więc pojedynczo (blokada na połączenie) i zapisuj nową parę atomowo.

4. Token aplikacji (client_credentials)

Bez sprzedawcy — tylko dane publiczne: kategorie, parametry, metody dostawy, przewoźnicy. Na innych trasach: 403 USER_TOKEN_REQUIRED.

5. Odwołanie

curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/auth/oauth/revoke" \
  -u "$ALLEE_CLIENT_ID:$ALLEE_CLIENT_SECRET" \
  -H "Accept: application/json" \
  --data-urlencode "token={refresh_token}" \
  --data-urlencode "token_type_hint=refresh_token" \
  -w '\nHTTP %{http_code}\n'

Sprzedawca może też cofnąć zgodę w swoim koncie (allee.pl → Konto → Aplikacje) — wtedy wszystkie tokeny pary przestają działać od razu (401, refresh: invalid_grant).