Ten dokument opisuje końcówki, do których dzwonisz, aby wdrożyć przepływ autoryzacji kodu OAuth 2.0, a także inne końcówki przydatne do wdrożenia uwierzytelnienia w swoich 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
Uzyskuje autoryzację od użytkownika, aby uwierzyć się z jego kontoRoblox.Oczekuje ważnego URL autoryzacji zbudowanego z określonymi parametrami.Ten punkt końcowy wspiera autoryzację PKCE.
Parametry zapytania
Nazwa | Opis | Wymagane | Przykład |
---|---|---|---|
client_id | ID klienta aplikacji. | tak | 816547628409595165403873012 |
redirect_uri | URL, do którego użytkownicy są przekierowywani po zakończeniu przepływu autoryzacji. | tak | https://www.roblox.com/example-redirect |
zakres | Żądane zakresy, oddzielone spacją.Użyj zakresu openid, aby otrzymać token ID.Użyj zakresów openid i profile, aby uzyskać więcej informacji o użytkowniku. | tak | openid profile |
rodzaj odpowiedzi | Credentiali, które aplikacja chce zwrócić.Domyślnym wpisywaćjest rodzaj autoryzacji kodu grantu. | tak | none , code |
prompt | Określa, jakie strony uwierzytelnienia i zgody są wyświetlane użytkownikom.Niektóre ekrany są wymagane dla aplikacji stron trzecich i nie można ich pominąć. | no | none , login , consent , select_account |
nonce | Numer kryptograficzny, który wiąże token z klientem. | nie | <random_value_1> |
stan | Niewidoczna wartość, która zapobiega sfałszowaniu żądań międzystronnych, rodzajowi ataku złośliwego.Przekazane z powrotem do aplikacji po autoryzacji. | nie | <app-provided-opaque-value> |
code_challenge | Wynikująca strona stosowania code_challenge_method do code_verifier. | nie | Base64-URL-kodowany ciąg |
code_challenge_method | Funkcja, która jest stosowana do code_verifier . | nie | S256 |
Żądanie
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 wywołaniu tego punktu końcowego użytkownik zostaje przekierowany na określoną URL przekierowania z kodem autoryzacji w parametrze zapytania code.Kod autoryzacji:
- Ma czas trwania jednej minuty.
- Można go odebrać tylko raz.
- Nie jest ważny po jednym użyciu.
wymianatokenów
Aby uzyskać tokeny do dostępu do API, wymień kod autoryzacji na zestaw poufnych tokenów.Wszystkie punkty końcowe tokenów wspierają dwa rodzaje autoryzacji klienta:
- Protokół autoryzacji HTTP z nagłówkiem autoryzacji: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
- ID klienta i sekret w ciele żądania jako parametry.
Następująca lista opisuje różne tokeny, które otrzymujesz z tego punktu końcowego.
Token dostępu - Reprezentuje autoryzację od twórcy lub użytkownika dla aplikacji strony trzeciej, aby uzyskać dostęp do chronionych zasobów Roblox.Jest to ciąg oznaczający określony zakres, czas trwania i inne atrybuty dostępu.Gdy serwer autoryzacji Roblox wyda token dostępu do aplikacja, token:
- Jest ważny przez 15 minut.
- Można go używać wielokrotnie przed wygaśnięciem.
- Można ją unieważnić przed wygaśnięciem, jeśli użytkownik aplikacji cofnie autoryzację.
Odśwież token - odświeża sesję sesja.Aplikacja może używać tokenu odświeżającego, aby uzyskać nowy zestaw tokenów, który obejmuje token dostępu, token odświeżający i token ID.Żeton odświeżający:
- Jest ważny przez 90 dni.
- Można go używać tylko raz, zanim wygaśnie, aby odświeżyć tokeny.
- Można ją unieważnić przed wygaśnięciem, jeśli użytkownik aplikacji cofnie autoryzację.
Token ID - Dostarcza dowód, że tożsamość użytkownika została uwierzytelniona.Jego zawartość zależy od zakresów żądanych i może zawierać podstawowe informacje użytkownika, w tym nazwę wyświetlania Roblox użytkownika i nazwa użytkownika.Token ID służy wyłącznie do celów autentyfikacji tożsamości i nie zapewnia dostępu do żadnych zasobów Roblox.
POST v1/token
Zdobądź zestaw tokenów z kodem autoryzacji.
Żądanie
(x-www-form-urlencoded)
Klucz | Wartość |
---|---|
kod | <authorization code> |
kod_weryfikator | <pkce code verifier value> |
grant_type | autorizacja_kod |
klient_id | <client_id> |
klient_sekret | <client_secret> |
Przykład prośby o uzyskanie żetonu
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 uzyskania odpowiedzi na token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Zdobądź zestaw tokenów z tokenem odświeżającym.
Żądanie
(x-www-form-urlencoded)
Klucz | Wartość |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
klient_id | <client_id> |
klient_secret | <client_secret> |
Przykład prośby o odświeżenie tokenu
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ź
Przykład prośby o odświeżenie tokenu
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Otrzymaj informacje o tokenie.Weryfikuje, czy token jest obecnie ważny i nie wygasł jeszcze.Przydatne do bezpaństwowej walidacji.Użyj tylko wtedy, gdy API, do którego masz dostęp, nie wymaga zasobu, takiego jak API Zasobów, lub jeśli po prostu chcesz zobaczyć konkretne roszczenia tokena.
Żądanie
(x-www-form-urlencoded)
Klucz | Wartość |
---|---|
token | <access_token> , <refresh_token> lub <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Przykład prośby o token introspekcji
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 token Introspect przykładu
{
"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, którym użytkownik dał zgodę.Jest to przydatne do weryfikacji stanowej.
Żądanie
(x-www-form-urlencoded)
Klucz | Wartość |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Przykład żądania zasobów tokenowych
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 zakres przyznał dostęp do zasoby należącego do autoryzującego owner .
Przykład odpowiedzi na zdobycie zasobów tokenowych
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Odwołaj sesję autoryzacji za pomocą dostarczonego żetonu odświeżenia.
Żądanie
(x-www-form-urlencoded)
Klucz | Wartość |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Przykład prośby o cofnięcie żetonu
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
Zdobywa ID użytkownika Roblox i inne metadane użytkownika.
Żądanie
nagłowie autoryzacji : Authorization: Bearer <access_token>Przykład prośby o uzyskanie informacji o użytkowniku
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 jednoznacznie zidentyfikować użytkownika.Użytkownicy mogą zmienić swoją nazwa wyświetlanaużytkownika i nazwę wyświetlaną w Roblox, więc nie używaj ich jako unikalnych identyfikatorów odnoszących się do użytkowników w Twojej aplikacja.
Zgłoś | Opis |
---|---|
sub | ID użytkownika Roblox. |
nazwa | nazwa wyświetlanawyświetlania Roblox. |
nickname | Nazwa wyświetlania Roblox. |
preferred_username | nazwa wyświetlananazwa użytkownikaRoblox. |
created_at | Czas stworzenia konta Roblox jako czasopień Unix. |
profil | URL profilu konta Roblox. |
zdjęcie | Zdjęcie głowy awatara Roblox.Może być null, jeśli obraz strzału w głowę awatara nie został jeszcze wygenerowany lub został zmoderowany. |
Przykładowy użytkownik z zakresem profilu
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/użytkownicy/1516563360/profil",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Przykładowy użytkownik bez zakresu profilu
{
"sub": "1516563360"
}
Odkrywanie
Dokument odkrywania OpenID Connect (OIDC) jest dokumentem JSON zawierającym metadane o szczegółach konfiguracji chmury otwartej, w tym listę zakresów i roszczeń związanych z tożsamością, które są wspierane.Możesz go użyć do dynamicznego odkrywania informacji o końcówkach Open Cloud OAuth 2.0 i konfiguracji, takich jak punkt autoryzacji, punkt końcowy tokenów i ustawiaćkluczy publicznych.
Po odzyskaniu i pobraniu dokumentu odkrywania z adresu URI dokumentu odkrywania możesz ręcznie sprawdzić pola w odpowiedzi, aby zweryfikować informacje, lub możesz utworzyć własną niestandardową mapę biblioteki do pól w schemacie odpowiedzi, aby zautomatyzować przepływ pracy.
GET .well-known/openid-configuration
Odpowiedź
Wszystkie odpowiedzi dokumentu odkrywania podążają za tym samym schematem, jak odpowiedź przykładowa poniżej.
Odpowiedź dokumentu odkrywania przykładu
{
"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/odwołanie",
"resources_endpoint": "https://apis.roblox.com/oauth/v1/token/źródła",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certyfikaty",
"registration_endpoint": "https://create.roblox.com/dashboard/credentials",
"service_documentation": "https://create.roblox.com/docs/referencje/cloud",
"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"
]
}