OAuth 2.1
Pozwól innym aplikacjom logować użytkowników kontem Bot-Hosting, tak jak Zaloguj się przez Discord. Oparte na OAuth 2.1 i PKCE, więc działa każdy standardowy klient OAuth.
Klucza API używaj do sterowania własnym kontem. OAuth wybierz, gdy budujesz aplikację działającą na kontach innych osób, żeby logowały się i wyrażały zgodę zamiast wklejać klucz. Asystenci AI, jak ChatGPT, łączą się właśnie tym przepływem.
Przebieg
- 01 Utwórz aplikację Zarejestruj nazwę i redirect URI w ustawieniach dewelopera. Dostajesz publiczny client_id, bez sekretu.
- 02 Wyślij użytkowników do autoryzacji Przekieruj na /oauth/authorize z PKCE. Użytkownik loguje się i zatwierdza zakresy.
- 03 Wymień kod Wracają z kodem. Wyślij go POST-em do endpointu tokenów, aby dostać token dostępu.
- 04 Wywołuj API w ich imieniu Wysyłaj token jako Bearer do /api/v1 i odświeżaj go w tle.
Endpointy
| Endpointy | Cel |
|---|---|
| GET /oauth/authorize | Ekran zgody użytkownika, otwierany w przeglądarce. |
| POST /api/oauth/token | Wymiana kodu na token albo odświeżenie tokenu. |
| POST /api/oauth/register | Dynamic Client Registration (RFC 7591), opcjonalnie. |
| GET /.well-known/oauth-authorization-server | Metadane wykrywania. |
| GET /.well-known/oauth-protected-resource | Metadane zasobu, używane przez klientów MCP. |
Czas życia tokenów
Kod autoryzacji 10 min Jednorazowy, powiązany z PKCE.
Token dostępu 7 dni Bearer dla wywołań /api/v1.
Token odświeżania 30 dni Rotowany przy każdym użyciu.
Odświeżanie
Każde odświeżenie zwraca nowy token odświeżania i unieważnia stary: zawsze nadpisuj zapisany. Jeśli odświeżenie zwróci invalid_grant, odeślij użytkownika do kroku 1.
Bezpieczeństwo
- Przechowuj tokeny po stronie serwera, powiązane z użytkownikiem. Nigdy nie wysyłaj ich do przeglądarki ani do publicznego repozytorium.
- Tokeny są unieważniane w chwili, gdy użytkownik odłączy twoją aplikację.
- W produkcji używaj redirect URI z https. http jest dopuszczone do testów lokalnych.
- Tokeny OAuth nigdy nie dają uprawnień administratora, niezależnie od zatwierdzonych zakresów.