Questo documento descrive i punti di interruzione che chiami per implementare il flusso di autorizzazione OAuth 2.0, nonché altri punti di interruzione utili per l'implementazione dell'autenticazione nei tuoi app.
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
Autorizzazione
GET v1/authorize
Ottiene l'autorizzazione dall'utente per autenticarsi con il loro AccountRoblox. Si aspetta che una URL di autorizzazione valida sia costruita con i parametri specificati. Questo punto di interfaccia supporta l'autorizzazione PKCE.
Parametri di query
Richiedi
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
Risposta
Dopo aver chiamato questo punto, l'utente viene reindirizzato all'URL specificato con il codice di autorizzazione in una code query parametri. Il codice di autorizzazione:
- Ha una vita di un minuto.
- Può essere riscattato solo una volta.
- Non è valido dopo un uso.
Scambio di gettoni
Per ottenere gettoni per accedere alle API, scambia un codice di autorizzazione per un insieme di gettoni confidenziali. Tutti i punti di terminazione dei gettoni supportano due tipi di autenticazione client:
- Http Basic Authentication Scheme con un autorization header: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID del client e segreto nel corpo della richiesta come parametri.
La seguente lista descrive i vari token che ricevi da questo punto.
Token di accesso - Rappresenta l'autorizzazione da un creatore o da un utente per un'app di terze parti per accedere alle loro risorse Roblox protette. È una stringa che denota uno specifico scopo, la vita e altri attributi di accesso. Una volta che il server di autorizzazione Roblox emette un token di accesso per un'applicazione, il token:
- È valido per 15 minuti.
- Può essere utilizzato più volte prima che scada.
- Può essere revocato prima che scada se un utente dell'app revoca l'autorizzazione.
Token di aggiornamento Token - Aggiorna una Sessionedi autorizzazione. Un'app può utilizzare il token di aggiornamento per ottenere un nuovo set di gettoni, tra cui un gettone di accesso, un gettone di aggiornamento e un ID gettone. Un gettone di aggiornamento:
- È valido per 90 giorni.
- Può essere utilizzato una sola volta prima che scada per aggiornare i gettoni.
- Può essere revocato prima che scada se un utente dell'app revoca l'autorizzazione.
Token ID - Fornisce la prova che l'identità di un utente sia stata autenticata. Il suo contenuto dipende dagli scope richiesti e può contenere informazioni di base sull'utente, tra cui il nome visualizzato Roblox e l'Nome utente. Il token ID è solo per scopi di autenticazione dell'identità e non fornisce accesso a risorse Roblox.
POST v1/token
Ottieni un set di token con un codice di autorizzazione.
Richiedi
(x-www-form-urlencoded)
| Chiave | Valore | | -------------- | ---------------- | | code | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | authorization_code | | client_id | <client_id> | | client_secret | 1> <client_secret>
Richieda esempio di richiesta di 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
Risposta del token di esempio
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Ottieni un set di gettoni con un gettone di aggiornamento.
Richiedi
(x-www-form-urlencoded)
| Chiave | Valore | | -------------- | |授权_类型 | refresh_ token | | refresh_ token | <refresh_token> | | client_id | <client_id> | client_secret | <client_secret> |
Request di aggiornamento del token di esempio
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
Request di aggiornamento del token di esempio
{
"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 è scaduto ancora. Utile per la convalida stateless. Usa solo se l'API che stai accedendo non richiede una risorsa, come la API delle risorse, o se vuoi semplicemente vedere le rivendicazioni specifiche del token.
Richiedi
(x-www-form-urlencoded)
| Chiave | Valore | | -------------- | | | token | <access_token> , <refresh_token> o <id_token> | | client_id | 1> <client_id>1> | | client_secret | 4> <client_secret>4>
Richiesta di token introspect example
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
Risposta del token di esempio 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
Controlla se un token può accedere a una risorsa specifica ottenendo la lista delle risorse utente che l'utente ha autorizzato. Questo è utile per la convalida statica.
Richiedi
(x-www-form-urlencoded)
| Chiave | Valore | | -------------- | | token | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Richiedi risorse gettoni di esempio
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
Risposta risorsa ottenuta esempio
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
}
}
}
]
}
POST v1/token/revoke
Rivocare una sessione di autorizzazione utilizzando il token di aggiornamento fornito.
Richiedi
(x-www-form-urlencoded)
| Chiave | Valore | | -------------- | | | gettonio | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Richiesta di gettoni di revoca di esempio
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 sull'utente
GET /v1/userinfo
Ottiene l'ID utente Roblox e altri metadati utente.
Richiedi
Authorization header : Authorization: Bearer <access_token>Esempio Get User Info Request
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Risposta
Puoi usare il valore sub per identificare univoco l'utente. Gli utenti possono cambiare il loro nome utente Roblox e il Nome Visualizzato, quindi non usarli come identificatori unici per fare riferimento agli utenti sul tuo applicazione.
| Claim | Descrizione | | | | nome | | sub | Roblox Nome utenteID
Utente di esempio con lo scopo del profilo
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/utes/1516563360/profile",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Utente di esempio senza profilo
{
"sub": "1516563360"
}
Scoperta
Il DiscoveryDocument OpenID Connect (OIDC) è un documento JSON che contiene metadati sulla configurazione Open Cloud, tra cui una lista di scudi e rivendicazioni che sono supportati. Puoi usarlo per scoprire dinamicamente informazioni sui punti di interruzione Open Cloud OAuth 2.0 e sulla configurazione, come l'autorizzazione punto di interruzione e il Impostaredi chiave pubblica.
Dopo aver recuperato e ottenuto il DiscoveryDocument dall'URL del documento Discovery, puoi controllare manualmente i campi nella risposta per verificare le informazioni, oppure puoi creare la tua libreria personalizzata per i campi nella risposta schema per automatizzare il tuo flusso di lavoro.
GET .well-known/openid-configuration
Risposta
Tutte le risposte del Discovery seguono lo stesso schema della risposta di esempio seguente.
Risposta del documento di scoperta dell'esempio
{
"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/risorse",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://creare.roblox.com/ashboard/credentials",
"service_documentation": "https://creare.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"
]
}