Autenticación OAuth 2.0

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Este documento describe los puntos finales que debes llamar para implementar el flujo de autorización con código OAuth 2.0, así como otros puntos finales útiles para implementar la autenticación en tus aplicaciones.

URL base

https://apis.roblox.com/oauth
Puntos finales

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

Autorización

GET v1/authorize

Obtiene autorización del usuario para autenticarse con su cuenta de Roblox. Espera una URL de autorización válida construida con los parámetros especificados. Este punto final admite la autorización PKCE.

Parámetros de consulta

NombreDescripciónRequeridoEjemplo
client_idEl ID del cliente de la aplicación.816547628409595165403873012
redirect_uriLa URL a la que los usuarios son redirigidos después de completar el flujo de autorización.`https://www.roblox.com/example-redirect``
scopeLos ámbitos solicitados, separados por espacios. Usa el ámbito openid para recibir un token de ID. Usa los ámbitos openid y profile para obtener más información del usuario.openid profile
response_typeLas credenciales que la aplicación desea recibir. El valor predeterminado es el tipo de concesión de código de autorización.none, code
promptEspecifica qué páginas de autenticación y consentimiento se muestran a los usuarios. Algunas pantallas son requeridas para aplicaciones de terceros y no se pueden omitir.nonone, login, consent, select_account
nonceEl número criptográfico que une el token con el cliente.no<random_value_1>
stateUn valor opaco que previene el ataque de falsificación de solicitud entre sitios. Se pasa de vuelta a la aplicación después de la autorización.no<app-provided-opaque-value>
code_challengeLa cadena resultante de aplicar el code_challenge_method al code_verifier.noCadena codificada en Base64-URL
code_challenge_methodLa función que se aplica al code_verifier.noS256

Solicitud

Ejemplo de Solicitud para Dirigirse al Flujo de Autorización

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

Respuesta

Después de llamar a este punto final, el usuario es redirigido a la URL de redirección especificada con el código de autorización en un parámetro de consulta code. El código de autorización:

  • Tiene una vida útil de un minuto.
  • Solo puede ser canjeado una vez.
  • Es inválido después de un uso.

Intercambio de token

Para obtener tokens para acceder a las API, intercambia un código de autorización por un conjunto de tokens confidenciales. Todos los puntos finales de tokens admiten dos tipos de autenticación de cliente:

  1. Esquema de Autenticación Básica HTTP con un encabezado de autorización: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
  2. ID de cliente y secreto en el cuerpo de la solicitud como parámetros.

La siguiente lista describe los diversos tokens que recibes de este punto final.

  • Token de acceso - Representa la autorización de un creador o usuario para que una aplicación de terceros acceda a sus recursos protegidos de Roblox. Es una cadena que denota un ámbito específico, vida útil y otros atributos de acceso. Una vez que el servidor de autorización de Roblox emite un token de acceso a una aplicación, el token:

    • Es válido por 15 minutos.
    • Puede utilizarse múltiples veces antes de que expire.
    • Puede ser invalidado antes de que expire si un usuario de la aplicación revoca la autorización.
  • Token de actualización - Refresca una sesión de autorización. Una aplicación puede usar el token de actualización para obtener un nuevo conjunto de tokens, que incluye un token de acceso, un token de actualización y un token de ID. Un token de actualización:

    • Es válido por 90 días.
    • Solo puede ser utilizado una vez antes de que expire para refrescar tokens.
    • Puede ser invalidado antes de que expire si un usuario de la aplicación revoca la autorización.
  • Token de ID - Proporciona prueba de que se ha autenticado la identidad de un usuario. Su contenido depende de los ámbitos solicitados y puede contener información básica del usuario, incluyendo el nombre de visualización y el nombre de usuario de Roblox. El token de ID es solo para propósitos de autenticación de identidad y no proporciona acceso a ningún recurso de Roblox.

POST v1/token

Obtén un conjunto de tokens con un código de autorización.

Solicitud

(x-www-form-urlencoded)

ClaveValor
code<código de autorización>
code_verifier<valor del verificador pkce>
grant_typeauthorization_code
client_id<client_id>
client_secret<client_secret>
Ejemplo de Solicitud para Obtener 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'

Respuesta

Ejemplo de Respuesta para Obtener Token

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

POST v1/token

Obtén un conjunto de tokens con un token de actualización.

Solicitud

(x-www-form-urlencoded)

ClaveValor
grant_typerefresh_token
refresh_token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Ejemplo de Solicitud para Refrescar 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'

Respuesta

Ejemplo de Respuesta para Refrescar Token

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

POST v1/token/introspect

Recibe información sobre un token. Verifica si el token es actualmente válido y no ha expirado aún. Útil para la validación sin estado. Utiliza solo si la API a la que accedes no requiere un recurso, como la API de Activos, o si solo quieres ver reclamaciones específicas del token.

Solicitud

(x-www-form-urlencoded)

ClaveValor
token<access_token>, <refresh_token> o <id_token>
client_id<client_id>
client_secret<client_secret>
Ejemplo de Solicitud para Introspectar 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'

Respuesta

Ejemplo de Respuesta para Introspectar 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

Verifica si un token puede acceder a un recurso específico obteniendo la lista de recursos de usuario para los que el usuario dio permiso. Esto es útil para la validación con estado.

Solicitud

(x-www-form-urlencoded)

ClaveValor
token<access_token>
client_id<client_id>
client_secret<client_secret>
Ejemplo de Solicitud para Obtener Recursos de 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'

Respuesta

El valor U en ids indica que un ámbito ha otorgado acceso a un recurso propietario del owner que autoriza.

Ejemplo de Respuesta para Obtener Recursos de Token

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

POST v1/token/revoke

Revoca una sesión de autorización utilizando el token de actualización proporcionado.

Solicitud

(x-www-form-urlencoded)

ClaveValor
token<refresh_token>
client_id<client_id>
client_secret<client_secret>
Ejemplo de Solicitud para Revocar 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'

Respuesta

200 OK con una respuesta vacía

Información del Usuario

GET /v1/userinfo

Obtiene el ID de usuario de Roblox y otros metadatos del usuario.

Solicitud

Encabezado de autorización: Authorization: Bearer <access_token>

Ejemplo de Solicitud para Obtener Información del Usuario

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

Respuesta

Puedes usar el valor sub para identificar de manera única al usuario. Los usuarios pueden cambiar su nombre de usuario de Roblox y su nombre de visualización, por lo que no los uses como identificadores únicos para referirte a los usuarios en tu aplicación.

ReclamaciónDescripción
subID de usuario de Roblox.
nameNombre de visualización de Roblox.
nicknameNombre de visualización de Roblox.
preferred_usernameNombre de usuario de Roblox.
created_atHora de creación de la cuenta de Roblox como un timestamp Unix.
profileURL del perfil de cuenta de Roblox.
pictureImagen de la cabeza del avatar de Roblox. Puede ser nula si la imagen de cabeza del avatar aún no se ha generado o ha sido moderada.
Ejemplo de Usuario con Ámbito de Perfil

{
"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"
}
Ejemplo de Usuario sin Ámbito de Perfil

{
"sub": "1516563360"
}

Descubrimiento

El Documento de Descubrimiento de OpenID Connect (OIDC) es un documento JSON que contiene metadatos sobre los detalles de configuración de Open Cloud, incluyendo una lista de ámbitos relacionados con la identidad y reclamaciones que son compatibles. Puedes usarlo para descubrir dinámicamente información sobre los puntos finales y la configuración de Open Cloud OAuth 2.0, tales como el punto final de autorización, punto final de token, y conjunto de claves públicas.

Después de recuperar y obtener el Documento de Descubrimiento desde la URI del documento de Descubrimiento, puedes inspeccionar manualmente los campos en la respuesta para verificar la información, o puedes crear tu propia biblioteca personalizada que mapee a los campos en el esquema de respuesta para automatizar tu flujo de trabajo.

GET .well-known/openid-configuration

Respuesta

Todas las respuestas del Documento de Descubrimiento siguen el mismo esquema que el siguiente ejemplo de respuesta.

Ejemplo de Respuesta del Documento de Descubrimiento

{
"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, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.