Autenticazione OAuth 2.0

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Questo documento descrive gli endpoint che è possibile chiamare per implementare il flusso di autorizzazione del codice OAuth 2.0, così come altri endpoint utili per implementare l'autenticazione nelle proprie app.

Base URL

https://apis.roblox.com/oauth
Endpoints

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

Autorizzazione

GET v1/authorize

Ottiene autorizzazione dall'utente per autenticarsi con il proprio account Roblox. Si aspetta un URL di autorizzazione valido costruito con i parametri specificati. Questo endpoint supporta l'autenticazione PKCE.

Parametri della query

NomeDescrizioneRichiestoEsempio
client_idL'ID client dell'app.816547628409595165403873012
redirect_uriL'URL verso cui gli utenti vengono reindirizzati dopo il completamento del flusso di autorizzazione.`https://www.roblox.com/example-redirect``
scopeGli ambiti richiesti, delimitati da uno spazio. Usa l'ambito openid per ricevere un ID token. Usa gli ambiti openid e profile per ottenere ulteriori informazioni sull'utente.openid profile
response_typeLe credenziali che l'app desidera ricevere. Il valore predefinito è il tipo di grant del codice di autorizzazione.none, code
promptSpecifica quali pagine di autenticazione e consenso vengono mostrate agli utenti. Alcuni schermi sono richiesti per le app di terze parti e non possono essere saltati.nonone, login, consent, select_account
nonceIl numero crittografico che lega il token con il client.no<random_value_1>
stateUn valore opaco che previene il furto di richieste tra siti, un tipo di attacco malevolo. Restituito all'app dopo l'autorizzazione.no<app-provided-opaque-value>
code_challengeLa stringa risultante dall'applicare il code_challenge_method al code_verifier.noStringa codificata Base64-URL
code_challenge_methodLa funzione applicata al code_verifier.noS256

Richiesta

Esempio di richiesta per indirizzarsi al flusso di autorizzazione

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

Risposta

Dopo aver chiamato questo endpoint, l'utente viene reindirizzato all'URL di reindirizzamento specificato con il codice di autorizzazione in un parametro di query code. Il codice di autorizzazione:

  • Ha una durata di un minuto.
  • Può essere riscattato solo una volta.
  • È invalido dopo un uso.

Scambio di token

Per ottenere token per accedere alle API, scambia un codice di autorizzazione per un insieme di token riservati. Tutti gli endpoint per i token supportano due tipi di autenticazione client:

  1. Schema di Autenticazione HTTP Basic con un'intestazione di autorizzazione: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
  2. ID client e segreto nel corpo della richiesta come parametri.

La seguente lista descrive i vari token che ricevi da questo endpoint.

  • Token di accesso - Rappresenta l'autorizzazione di un creatore o utente per un'app di terze parti per accedere alle loro risorse protette di Roblox. È una stringa che denota uno specifico ambito, durata e altri attributi di accesso. Una volta che il server di autorizzazione di Roblox emette un token di accesso all'app, il token:

    • È valido per 15 minuti.
    • Può essere utilizzato più volte prima di scadere.
    • Può essere invalidato prima della scadenza se un utente dell'app revoca l'autorizzazione.
  • Token di aggiornamento - Aggiorna una sessione di autorizzazione. Un'app può usare il token di aggiornamento per ottenere un nuovo insieme di token, che include un token di accesso, un token di aggiornamento e un ID token. Un token di aggiornamento:

    • È valido per 90 giorni.
    • Può essere utilizzato solo una volta prima di scadere per aggiornare i token.
    • Può essere invalidato prima della scadenza se un utente dell'app revoca l'autorizzazione.
  • ID token - Fornisce prova che l'identità di un utente è stata autenticata. Il suo contenuto dipende dagli ambiti richiesti e può contenere informazioni di base sull'utente, inclusi il nome visualizzato e il nome utente di Roblox di un utente. L'ID token è solo per scopi di autenticazione dell'identità e non fornisce accesso a nessuna risorsa di Roblox.

POST v1/token

Ottieni un insieme di token con un codice di autorizzazione.

Richiesta

(x-www-form-urlencoded)

ChiaveValore
code<codice di autorizzazione>
code_verifier<valore del code verifier pkce>
grant_typeauthorization_code
client_id<client_id>
client_secret<client_secret>
Esempio di richiesta per ottenere il token

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'

Risposta

Esempio di risposta per ottenere il token

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

POST v1/token

Ottieni un insieme di token con un token di aggiornamento.

Richiesta

(x-www-form-urlencoded)

ChiaveValore
grant_typerefresh_token
refresh_token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Esempio di richiesta di aggiornamento del token

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'

Risposta

Esempio di richiesta di aggiornamento del token

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

POST v1/token/introspect

Ricevi informazioni su un token. Verifica se il token è attualmente valido e non è ancora scaduto. Utile per la convalida senza stato. Usare solo se l'API a cui stai accedendo non richiede una risorsa, come l'API delle risorse, o se vuoi solo vedere specifici claims del token.

Richiesta

(x-www-form-urlencoded)

ChiaveValore
token<access_token>, <refresh_token> o <id_token>
client_id<client_id>
client_secret<client_secret>
Esempio di richiesta di introspezione del token

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'

Risposta

Esempio di risposta di introspezione del token

{
"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

Controlla se un token può accedere a una risorsa specifica ottenendo l'elenco delle risorse utente a cui l'utente ha dato accesso. Questo è utile per la convalida con stato.

Richiesta

(x-www-form-urlencoded)

ChiaveValore
token<access_token>
client_id<client_id>
client_secret<client_secret>
Esempio di richiesta per ottenere le risorse del token

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'

Risposta

Il valore U in ids indica che un ambito ha concesso accesso a una risorsa posseduta dal proprietario autorizzato.

Esempio di risposta per ottenere le risorse del token

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

POST v1/token/revoke

Revoca una sessione di autorizzazione utilizzando il token di aggiornamento fornito.

Richiesta

(x-www-form-urlencoded)

ChiaveValore
token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Esempio di richiesta di revoca del token

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'

Risposta

200 OK con una risposta vuota

Informazioni utente

GET /v1/userinfo

Ottiene l'ID utente di Roblox e altri metadati dell'utente.

Richiesta

Intestazione di autorizzazione: Authorization: Bearer <access_token>

Esempio di richiesta di informazioni utente

curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \
--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'

Risposta

Puoi utilizzare il valore sub per identificare univocamente l'utente. Gli utenti possono cambiare il proprio nome utente e nome visualizzato di Roblox, quindi non utilizzare questi come identificatori unici per riferirsi agli utenti sulla tua app.

ClaimDescrizione
subID utente di Roblox.
nameNome visualizzato di Roblox.
nicknameNome visualizzato di Roblox.
preferred_usernameNome utente di Roblox.
created_atData di creazione dell'account Roblox come timestamp Unix.
profileURL del profilo dell'account Roblox.
pictureImmagine del ritratto dell'avatar Roblox. Può essere nullo se l'immagine del ritratto dell'avatar non è ancora stata generata o è stata moderata.
Esempio di utente con ambito profilo

{
"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"
}
Esempio di utente senza ambito profilo

{
"sub": "1516563360"
}

Rilevamento

Il Documento di scoperta OpenID Connect (OIDC) è un documento JSON che contiene metadati sui dettagli di configurazione di Open Cloud, inclusa un'elenco di ambiti e claims relativi all'identità supportati. Puoi usarlo per scoprire dinamicamente informazioni sugli endpoint e la configurazione OAuth 2.0 di Open Cloud, come l'endpoint di autorizzazione, l'endpoint di token e il set di chiavi pubbliche.

Dopo aver recuperato e recuperato il Documento di scoperta dall'URI del documento di scoperta, puoi ispezionare manualmente i campi nella risposta per verificare le informazioni, oppure puoi creare la tua libreria personalizzata per mappare i campi nello schema di risposta per automatizzare il tuo flusso di lavoro.

GET .well-known/openid-configuration

Risposta

Tutte le risposte del Documento di scoperta seguono lo stesso schema dell'esempio di risposta seguente.

Esempio di risposta del Documento di scoperta

{
"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. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.