Ce document décrit les points finaux que vous appelez pour mettre en œuvre le flux de code d'autorisation OAuth 2.0, ainsi que d'autres points finaux utiles pour mettre en œuvre l'authentification dans vos applications.
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
Autorisation
GET v1/authorize
Obtient l'autorisation de l'utilisateur pour se connecter avec son compte Roblox.Attend une URL d'autorisation valide construite avec les paramètres spécifiés.Cet endpoint prend en charge l'autorisation PKCE.
Paramètres de requête
Nom | Description | Obligatoire | Exemple |
---|---|---|---|
client_id | L'ID du client de l'application. | oui | 816547628409595165403873012 |
redirect_uri | L'URL vers laquelle les utilisateurs sont redirigés après le flux d'autorisation terminé. | oui | https://www.roblox.com/example-redirect |
scope | Les scopes demandés, espace séparé.Utilisez le scope openid pour recevoir un jeton d'identification.Utilisez les scopes openid et profile pour obtenir plus d'informations sur l'utilisateur. | oui | openid profile |
type de réponse | Les crédences que l'app souhaite retourner.La valeur par défaut est le taperd'autorisation du code d'autorisation. | oui | none , code |
prompt | Spécifie les pages d'authentification et de consentement qui sont affichées aux utilisateurs.Certaines écrans sont requis pour les applications tierces et ne peuvent pas être ignorés. | no | none , login , consent , select_account |
nonce | Le numéro cryptographique qui lie le jeton au client. | non | <random_value_1> |
état | Une valeur opaque qui empêche la falsification de requêtes entre sites, un type d'attaque malveillante.Renvoyé à l'application après autorisation. | no | <app-provided-opaque-value> |
code_challenge | La chaîne résultante de l'application du code_challenge_method au code_verifier . | no | Chaîne Base64-URL-codée |
code_challenge_method | La fonction qui est appliquée au code_verifier . | non | S256 |
Demande
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
Réponse
Après avoir appelé cette fin de point, l'utilisateur est redirigé vers l'URL de redirection spécifiée avec le code d'autorisation dans un paramètre de requête code.Le code d'autorisation :
- A une durée de vie d'une minute.
- Ne peut être racheté qu'une seule fois.
- Est invalide après une utilisation.
échangerde jetons
Pour obtenir des jetons d'accès aux API, échangez un code d'autorisation contre un ensemble de jetons confidentiels .Tous les points d'extrémité de jeton supportent deux types d'authentification client :
- HTTP Scheme d'authentification de base avec une tête d'autorisation : Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID de client et secret dans le corps de la demande en tant que paramètres.
La liste suivante décrit les différents jetons que vous recevez de cet endpoint.
Token d'accès - Représente l'autorisation d'un créateur ou d'un utilisateur pour qu'une application tierce ait accès à leurs ressources Roblox protégées.C'est une chaîne désignant une portée spécifique, une durée de vie et d'autres attributs d'accès.Une fois que le serveur d'autorisation Roblox a émis un jeton d'accès à une application, le jeton :
- Est valide pendant 15 minutes.
- Peut être utilisé plusieurs fois avant expiration.
- Peut être invalidé avant son expiration si un utilisateur d'application révoque l'autorisation.
Jeton de rafraîchissement - Rafraîchit une session d'autorisation.Une application peut utiliser le jeton de rafraîchissement pour obtenir un nouveau ensemble de jetons, qui comprend un jeton d'accès, un jeton de rafraîchissement et un jeton d'identification.Un jeton de rafraîchissement :
- Est valable pendant 90 jours.
- Ne peut être utilisé qu'une seule fois avant son expiration pour actualiser les jetons.
- Peut être invalidé avant son expiration si un utilisateur d'application révoque l'autorisation.
Token d'identification - Fournit la preuve que l'identité d'un utilisateur a été authentifiée.Son contenu dépend des domaines demandés et peut contenir des informations utilisateur de base, y compris le nom d'affichage Roblox et le nom d'utilisateur d'un utilisateur.Le jeton d'identification est uniquement à des fins d'authentification d'identité et ne fournit pas d'accès à toutes les ressources Roblox.
POST v1/token
Obtenez un ensemble de jetons avec un code d'autorisation.
Demande
(x-www-form-urlencoded)
Clé | Valeur |
---|---|
code | <authorization code> |
code_verifier | <pkce code verifier value> |
grant_type | autorisation_code |
client_id | <client_id> |
client_secret | <client_secret> |
Exemple de demande d'obtention de jeton
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'
Réponse
Exemple d'obtention de la réponse au jeton
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Obtenez un ensemble de jetons avec un jeton de rafraîchissement.
Demande
(x-www-form-urlencoded)
Clé | Valeur |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemple de demande de rafraîchissement de jeton
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'
Réponse
Exemple de demande de rafraîchissement de jeton
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Recevoir des informations sur un jeton.Vérifie si le jeton est actuellement valide et n'a pas encore expiré.Utile pour la validation sans état.Utilisez-le uniquement si l'API que vous utilisez ne nécessite pas de ressource, telle que l'API des ressources, ou si vous voulez simplement voir des revendications spécifiques du jeton.
Demande
(x-www-form-urlencoded)
Clé | Valeur |
---|---|
token | <access_token> , <refresh_token> ou <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemple de demande de jeton d'introspection
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'
Réponse
Réponse au jeton d'introspection d'exemple
{
"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
Vérifiez si un jeton peut accéder à une ressource spécifique en obtenant la liste des ressources utilisateur auxquelles l'utilisateur a donné la permission.Cela est utile pour la validation étatique.
Demande
(x-www-form-urlencoded)
Clé | Valeur |
---|---|
jeton | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemple de demande de ressources de jeton obtenu
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'
Réponse
La valeur U dans ids indique que une portée a accordé l'accès à une ressource appartenant à l'auteur autorisant owner .
Exemple de réponse aux ressources de jeton obtenues
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Révoquer une session d'autorisation en utilisant le jeton de rafraîchissement fourni.
Demande
(x-www-form-urlencoded)
Clé | Valeur |
---|---|
jeton | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemple de demande de révocation de jeton
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'
Réponse
200 OK avec une réponse vide
Informations de l'utilisateur
GET /v1/userinfo
Obtient l'ID utilisateur Roblox et d'autres métadonnées utilisateur.
Demande
En-tête d'autorisation : Authorization: Bearer <access_token>Exemple de demande d'information sur l'utilisateur
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Réponse
Vous pouvez utiliser la valeur sub pour identifier de manière unique l'utilisateur.Les utilisateurs peuvent modifier leur nom d'utilisateur et leur nom d'affichage Roblox, donc ne les utilisez pas comme identifiants uniques pour référencer les utilisateurs sur votre application.
Réclamer | Description |
---|---|
sous | ID utilisateur Roblox. |
nom | Nom d'affichage Roblox. |
pseudonyme | Nom d'affichage Roblox. |
nom d'utilisateur préféré | nom d'utilisateur Roblox. |
created_at | Temps de création du compte Roblox en tant qu'horodatage Unix. |
profil | URL du profil de compte Roblox. |
photo | Image de tir à la tête d'avatar Roblox.Peut être nul si l'image de tir à la tête de l'avatar n'a pas encore été générée ou a été modérée. |
Exemple d'utilisateur avec portée de profil
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/utilisateurs/1516563360/profil",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Exemple d'utilisateur sans scope de profil
{
"sub": "1516563360"
}
Découverte
Le document de découverte OpenID Connect (OIDC) est un document JSON qui contient des métadonnées sur les détails de configuration du cloud ouvert, y compris une liste de scopes et de revendications liés à l'identité qui sont pris en charge.Vous pouvez l'utiliser pour découvrir dynamiquement des informations sur les points de terminaison et la configuration d'Open Cloud OAuth 2.0, tels que l'extrémité d'autorisation, l'extrémité de jeton et le configurerde clés publiques.
Après avoir récupéré et récupéré le document de découverte à partir de l' URI du document de découverte, vous pouvez soit inspecter manuellement les champs dans la réponse pour vérifier les informations, soit créer votre propre carte de bibliothèque personnalisée pour les champs dans le schéma de réponse pour automatiser votre flux de travail.
GET .well-known/openid-configuration
Réponse
Toutes les réponses de la découverte suivent le même schéma que la réponse d'exemple suivante.
Réponse au document de découverte d'exemple
{
"issuer": "https://apis.roblox.com/oauth/",
"authorization_endpoint": "https://apis.roblox.com/oauth/v1/autoriser",
"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/ressources",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://créer.roblox.com/dashboard/credentials",
"service_documentation": "https://créer.roblox.com/docs/référence/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"
]
}