Uwierzytelnianie OAuth 2.0

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Dokument ten opisuje punkty końcowe, które należy wywołać w celu wdrożenia przepływu kodu autoryzacji OAuth 2.0 oraz inne punkty końcowe przydatne do wdrażania uwierzytelnienia w aplikacjach.

Podstawowy URL

https://apis.roblox.com/oauth
Punkty końcowe

GET v1/authorize
POST v1/token
POST v1/token/introspect
POST v1/token/resources
POST v1/token/revoke
GET v1/userinfo
GET .well-known/openid-configuration

Autoryzacja

GET v1/authorize

Uzyskuje autoryzację od użytkownika do uwierzytelnienia się za pomocą ich konta Roblox. Oczekuje ważnego adresu URL autoryzacji skonstruowanego z określonymi parametrami. Ten punkt końcowy obsługuje autoryzację PKCE.

Parametry zapytania

NazwaOpisWymaganePrzykład
client_idIdentyfikator klienta aplikacji.tak816547628409595165403873012
redirect_uriAdres URL, na który użytkownicy są przekierowywani po zakończeniu przepływu autoryzacji.tak`https://www.roblox.com/example-redirect``
scopeŻądane zakresy, oddzielone spacjami. Użyj zakresu openid, aby otrzymać token ID. Użyj zakresów openid oraz profile, aby uzyskać więcej informacji o użytkowniku.takopenid profile
response_typePoświadczenia, które aplikacja chce otrzymać z powrotem. Domyślnym typem jest typ przyznania kodu autoryzacyjnego.taknone, code
promptOkreśla, jakie strony uwierzytelniania i zgody są wyświetlane użytkownikom. Niektóre ekrany są wymagane dla aplikacji zewnętrznych i nie mogą być pomijane.nienone, login, consent, select_account
nonceKryptograficzna liczba, która wiąże token z klientem.nie<random_value_1>
stateNieprzejrzysty parametr, który zapobiega fałszywemu uwierzytelnieniu, typowi malwersacji. Przekazywany z powrotem do aplikacji po autoryzacji.nie<app-provided-opaque-value>
code_challengePowstały ciąg po zastosowaniu code_challenge_method do code_verifier.nieCiąg zakodowany w Base64-URL
code_challenge_methodFunkcja, która jest stosowana do code_verifier.nieS256

Zapytanie

Przykładowe zapytanie kierujące do przepływu autoryzacji

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 jest przekierowywany na określony adres URL przekierowania z kodem autoryzacyjnym w parametrze zapytania code. Kod autoryzacyjny:

  • Ma czas życia wynoszący jedną minutę.
  • Można go zrealizować tylko raz.
  • Jest nieważny po pierwszym użyciu.

Wymiana tokenów

Aby uzyskać tokeny do uzyskiwania dostępu do API, wymień kod autoryzacyjny na zestaw poufnych tokenów. Wszystkie punkty końcowe tokenów obsługują dwa rodzaje uwierzytelnienia klienta:

  1. Schemat uwierzytelniania HTTP Basic z nagłówkiem autoryzacji: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
  2. Identyfikator klienta i tajny klucz w ciele zapytania jako parametry.

Poniższa 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 zewnętrznej aplikacji, aby uzyskać dostęp do ich chronionych zasobów Roblox. Jest to ciąg oznaczający określony zakres, czas życia i inne atrybuty dostępu. Po wydaniu tokenu dostępu przez serwer autoryzacji Roblox, token:

    • Jest ważny przez 15 minut.
    • Może być używany wielokrotnie przed jego wygaśnięciem.
    • Może zostać unieważniony przed wygaśnięciem, jeśli użytkownik aplikacji revokuje autoryzację.
  • Token odświeżający - Odświeża sesję autoryzacji. 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. Token odświeżający:

    • Jest ważny przez 90 dni.
    • Może być używany tylko raz przed jego wygaśnięciem w celu odświeżenia tokenów.
    • Może być unieważniony przed wygaśnięciem, jeśli użytkownik aplikacji revokuje autoryzację.
  • Token ID - Dostarcza dowód na to, że tożsamość użytkownika została uwierzytelniona. Jego zawartość zależy od żądanych zakresów i może zawierać podstawowe informacje o użytkowniku, w tym nazwę wyświetlaną Roblox i nazwę użytkownika. Token ID jest przeznaczony wyłącznie do celów uwierzytelniania tożsamości i nie zapewnia dostępu do żadnych zasobów Roblox.

POST v1/token

Uzyskaj zestaw tokenów za pomocą kodu autoryzacyjnego.

Zapytanie

(x-www-form-urlencoded)

KluczWartość
code<kod autoryzacyjny>
code_verifier<wartość weryfikatora pkce>
grant_typeauthorization_code
client_id<client_id>
client_secret<client_secret>
Przykładowe zapytanie uzyskania 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ładowa odpowiedź uzyskania tokenu

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token

Uzyskaj zestaw tokenów za pomocą tokenu odświeżającego.

Zapytanie

(x-www-form-urlencoded)

KluczWartość
grant_typerefresh_token
refresh_token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Przykładowe zapytanie odświeżenia 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ładowa odpowiedź odświeżenia tokenu

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token/introspect

Odbierz informacje o tokenie. Weryfikuje, czy token jest obecnie ważny i nie wygasł. Przydatne do walidacji bezstanowej. Użyj tylko, jeśli API, do którego uzyskujesz dostęp, nie wymaga zasobów, takich jak API zasobów, lub jeśli chcesz po prostu zobaczyć konkretne roszczenia tokenu.

Zapytanie

(x-www-form-urlencoded)

KluczWartość
token<access_token>, <refresh_token> lub <id_token>
client_id<client_id>
client_secret<client_secret>
Przykładowe zapytanie weryfikacji tokenu

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ź

Przykładowa odpowiedź weryfikacji tokenu

{
"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 konkretnego zasobu, uzyskując listę zasobów użytkownika, do których użytkownik przyznał pozwolenie. Jest to przydatne do walidacji stanowej.

Zapytanie

(x-www-form-urlencoded)

KluczWartość
token<access_token>
client_id<client_id>
client_secret<client_secret>
Przykładowe zapytanie uzyskania zasobów tokenu

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 zasobu należącego do upoważnionego owner.

Przykładowa odpowiedź uzyskania zasobów tokenu

{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}

POST v1/token/revoke

Cofnij sesję autoryzacji przy użyciu podanego tokenu odświeżającego.

Zapytanie

(x-www-form-urlencoded)

KluczWartość
token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Przykładowe zapytanie unieważnienia tokenu

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

Uzyskuje identyfikator użytkownika Roblox i inne metadane użytkownika.

Zapytanie

Nagłówek autoryzacji: Authorization: Bearer <access_token>

Przykładowe zapytanie o informacje 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 unikalnie zidentyfikować użytkownika. Użytkownicy mogą zmieniać swoją nazwę użytkownika Roblox i nazwę wyświetlaną, więc nie używaj ich jako unikalnych identyfikatorów do odniesienia do użytkowników w swojej aplikacji.

RoszczenieOpis
subIdentyfikator użytkownika Roblox.
nameNazwa wyświetlana Roblox.
nicknameNazwa wyświetlana Roblox.
preferred_usernameNazwa użytkownika Roblox.
created_atCzas utworzenia konta Roblox w formie znaku czasowego Unix.
profileURL profilu konta Roblox.
pictureZdjęcie awatara Roblox. Może być null, jeśli zdjęcie awatara jeszcze nie zostało wygenerowane lub zostało moderowane.
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ładowy użytkownik bez zakresu profilu

{
"sub": "1516563360"
}

Odkrywanie

Dokument odkrywania OpenID Connect (OIDC) to dokument JSON, który zawiera metadane dotyczące szczegółów konfiguracji Open Cloud, w tym listę zakresów i roszczeń związanych z tożsamością, które są obsługiwane. Możesz go używać do dynamicznego odkrywania informacji na temat punktów końcowych i konfiguracji OAuth 2.0 Open Cloud, takich jak punkt końcowy autoryzacji, punkt końcowy tokenów i publiczny zestaw kluczy.

Po pobraniu i pozyskaniu dokumentu odkrywania z URI dokumentu odkrywania, możesz albo ręcznie sprawdzić pola w odpowiedzi, aby zweryfikować informacje, albo możesz stworzyć własną własną bibliotekę mapującą pola w schemacie odpowiedzi, aby zautomatyzować swój proces pracy.

GET .well-known/openid-configuration

Odpowiedź

Wszystkie odpowiedzi dokumentu odkrywania mają tę samą strukturę, co poniższy przykład odpowiedzi.

Przykładowa odpowiedź dokumentu odkrywania

{
"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/resources",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://create.roblox.com/dashboard/credentials",
"service_documentation": "https://create.roblox.com/docs/reference/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"
]
}
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.