Ten dokument opisuje końcewety, które możesz wezwywać, aby zaimplementować kod autoryzacji OAuth 2.0, a także inne końcewety użyteczne do wdrożenia uwierzytelnienia w twoich aplikacjach.
Base URL
https://apis.roblox.com/oauth
Endpoints
GET v1/authorizePOST v1/tokenPOST v1/token/introspectPOST v1/token/resourcesPOST v1/token/revokeGET v1/userinfoGET .well-known/openid-configuration
Autoryzacja
GET v1/authorize
Zdobywa autoryzację od użytkownika, aby uwierzytelnić się za pomocą jego kontoRoblox. Oczekuje poprawny URL autoryzacji zbudowany z określonych parametrów. Ten interfejs wspiera uwierzytelnienie PKCE.
Parametry zapytania
Zgłaszaj prośbę
Example Request of Directing to Authorization Flow
https://apis.roblox.com/oauth/v1/authorize?client_id=816547628409595165403873012&redirect_uri=https://my-app.com/redirect&scope=openid&response_type=code&nonce=12345&state=6789
Odpowiedź
Po wezwaniu tego końca użytkownik jest przekierowany do określonego URL z kodem autoryzacji w code parametrem zapytania. Kod autoryzacji:
- Ma czas życia jednej minuty.
- Można go odebrać tylko raz.
- Jest nieprawidłowy po jednym użyciu.
Wymiana Tokenów
Aby uzyskać tokeny do dostępu do API, wymień kod autoryzacji za zestaw poufnych tokenów. Wszystkie punkty końcowe tokenów wspierają dwa rodzaje uwierzytelnienia klienta:
- Protokół autoryzacji HTTP z nagłówkim autoryzacji: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID i sekret w ciele wniosku jako parametry.
Poniższa lista opisuje różne tokeny, które otrzymujesz z tego końca.
Token dostępu Reprezentuje autoryzację od twórcy lub użytkownika dla aplikacji stron trzecich, aby uzyskać dostęp do ich chronionych zasobów Roblox. Jest to struny określające specyficzny zakres, czas życia i inne cechy dostępu. Po wygłoszeniu przez węzł aplikacjaautoryzacji token dostępu:
- Jest ważny przez 15 minut.
- Można go używać wiele razy przed jego wygaśnięciem.
- Można go anulować przed upływem czasu, jeśli użytkownik aplikacji cofnie autoryzację.
Token odświeżania - Odświeża sesjaautoryzacji. Aplikacja może użyć tokenu odświeżania, aby uzyskać nowy zestaw tokenów, w tym token dostępu, token odświeżania i token tożsamości. Token odświeżania:
- Jest ważny przez 90 dni.
- Można używać tylko raz przed wygasną, aby odświeżyć tokeny.
- Można go anulować przed upływem czasu, jeśli użytkownik aplikacji cofnie autoryzację.
Token ID - Dostarcza dowód, że tożsamość użytkownika została uwierzytelniona. Jego treść zależy od wymagań wnioskowanych i może zawierać podstawowe informacje użytkownika, w tym imię użytkownika Roblox i nazwa użytkownika. Token ID jest tylko do celów uwierzytelniania tożsamości i nie dostarcza dostępu do żadnych zasobów Roblox.
POST v1/token
Zdobądź zestaw tokenów z kodem autoryzacji.
Zgłaszaj prośbę
(x-www-form-urlencoded)
| Klucz | Wartość | | Dziesiątki | | Kodeksy | | code | <authorization code> | | kode_verifier | <pkce code verifier value> | | grant_type | autoryzacja_kodeks | | | client_id | <client_id> | | client_secret |
Przykład wniosku o dostarczenie tokenu
curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'client_id=840974200211308101' \--data-urlencode 'client_secret=RBX-CR9...St12L' \--data-urlencode 'grant_type=authorization_code' \--data-urlencode 'code=yCnq4ofX1...XmGpdx'
Odpowiedź
Przykład Otrzymania Odpowiedzi Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Zdobądź zestaw tokenów za pomocą tokenu odświeżania.
Zgłaszaj prośbę
(x-www-form-urlencoded)
| Klucz | Wartość | | -------------- | ----------------- | | grant_type | refresh_ token | | refresh_ token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Prośba o aktualizację tokena
curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'grant_type=refresh_token' \--data-urlencode 'refresh_token=Ujfstayclfdlbm...BGydlsnU' \--data-urlencode 'client_id=840974200211308101' \--data-urlencode 'client_secret=RBX-CR9...St12L'
Odpowiedź
Prośba o aktualizację tokena
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Otrzymuj informacje o tokenie. Zweryfikuje, czy token jest obecnie ważny i nie wygasł jeszcze. Przydatny do statystycznej weryfikacji. Użyj tylko jeśli API, do której masz dostęp, nie wymaga zasobu, takiego jak Assets API, lub jeśli po prostu chcesz zobaczyć konkretne oświadczenia o tokenie.
Zgłaszaj prośbę
(x-www-form-urlencoded)
| Klucz | Wartość | | Działka | | Dokumentacja | | Token | | <access_token> , <refresh_ token>] lub <id_ token> | | Klient_id | | 1> <client_id>1> | | | Klient_secret | 4> <客戶_秘密>] |
Prośba o przykładowy token Introspect
curl --location --request POST 'https://apis.roblox.com/oauth/v1/token/introspect' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \--data-urlencode 'client_id=840974200211308101' \--data-urlencode 'client_secret=RBX-CR9...St12L'
Odpowiedź
Odpowiedź na przykład tokena introspect
{
"active": true,
"jti": "RT.2GcjvTduKzk6QY9tjTfm",
"iss": "https://apis.roblox.com/oauth/",
"token_type": "Bearer",
"client_id": "840974200211308101",
"aud": "4239311013248676173",
"sub": "1516563360",
"scope": "universe-messaging-service:publish",
"exp": 1676394509,
"iat": 1660842510
}
POST v1/token/resources
Sprawdź, czy token może uzyskać dostęp do określonego zasobu, uzyskując listę zasobów użytkownika, dla którego udzielono zgody. To jest użyteczne dla poprawnej weryfikacji stanu.
Zgłaszaj prośbę
(x-www-form-urlencoded)
| klucz | wartość | | | | | | | | | | | token | <access_token> | | klienck_id | <client_id> | | klienck_seкреt | <client_secret> |
Wniosek o zasoby tokenowe przykładu
curl --location --request POST https://apis.roblox.com/oauth/v1/token/resources' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \--data-urlencode 'client_id=840974200211308101' \--data-urlencode 'client_secret=RBX-CR9...St12L'
Odpowiedź
Wartość U w ids wskazuje, że kopia ma dostęp do zasobu należącego do autora owner.
Przykład Otrzymanie odpowiedzi zasobów tokenowych
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Odzuń sesję autoryzacji używając dostarczonego tokena odświeżania.
Zgłaszaj prośbę
(x-www-form-urlencoded)
| klucz | wartość | | -------------- | | token | <refresh_token> | | klient_id | <client_id> | | klient_secret | <client_secret> |
Prośba o usunięcie tokena revoke
curl --location --request POST https://apis.roblox.com/oauth/v1/token/revoke' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'token=Ujfstayclfdlbm...BGydlsnU' \--data-urlencode 'client_id=840974200211308101' \--data-urlencode 'client_secret=RBX-CR9...St12L'
Odpowiedź
200 OK z pustą odpowiedzią
Informacje o użytkowniku
GET /v1/userinfo
Otrzymuje ID użytkownika Roblox i inne metadane użytkownika.
Zgłaszaj prośbę
Autoryzacja nagłówka głowy : Authorization: Bearer <access_token>Przykład Get User Info Request
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Odpowiedź
Możesz użyć wartości sub, aby unikalnie zidentyfikować użytkownika. Użytkownicy mogą zmienić swoje nazwa wyświetlanaużytkownika i nazwę wyświetlaną, więc nie używaj ich jako unikalnych identyfikatorów do odniesienia się do użytkowników na swojej aplikacja.
| Claim | Description | | ------------------ | | | sub | Roblox nazwa użytkownikaID.
Przykładowy użytkownik z zakresem profilu
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/users/1516563360/profile",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Przykład użytkownika bez profilu
{
"sub": "1516563360"
}
Odkryj
Dokument Discovery OpenID Connect (OIDC) to JSONowy dokument zawierający metadane o szczegółach konfiguracji Open Cloud, w tym listę związanych z identyfikatorem zakresów i oświadczeń, które są wspierane. Możesz go używać do dynamicznego odkrywania informacji o Open Cloud OAuth 2.0 endpoints i konfiguracji, takich jak autoryzacja endpoint i token endpoint.
Po odzyskaniu i odczytaniu Dokumentu Odkrycia z Dokumentu URL Dokumentu, możesz ręcznie sprawdzić pola w odpowiedzi, aby zweryfikować informacje, lub możesz stworzyć własną mapę biblioteki do pola w odpowiedzi, aby automatyzować swoją pracę.
GET .well-known/openid-configuration
Odpowiedź
Wszystkie odpowiedzi na dokumenty odkrycia podążają za tym samym schematem, co następująca odpowiedź na przykład.
Odpowiedź na pytanie o dostępności dokumentu
{
"issuer": "https://apis.roblox.com/oauth/",
"authorization_endpoint": "https://apis.roblox.com/oauth/v1/authorize",
"token_endpoint": "https://apis.roblox.com/oauth/v1/ token",
"introspection_endpoint": "https://apis.roblox.com/oauth/v1/ token/introspect",
"revocation_endpoint": "https://apis.roblox.com/oauth/v1/ token/revoke",
"resources_endpoint": "https://apis.roblox.com/oauth/v1/ token/資源"
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://create.roblox.com/дашборд/credentials",
"service_documentation": "https://create.roblox.com/docs/reference/云"
"scopes_supported": [
"openid",
"profile",
"email",
"verification",
"credentials",
"age",
"premium",
"roles"
],
"response_types_supported": ["none", "code"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["ES256"],
"claims_supported": [
"sub",
"type",
"iss",
"aud",
"exp",
"iat",
"nonce",
"name",
"nickname",
"preferred_username",
"created_at",
"profile",
"email",
"email_verified",
"verified",
"age_bracket",
"premium",
"roles",
"internal_user"
],
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"client_secret_basic"
]
}