Este documento describe los endpoints que llamas para implementar el flujo de autorización de OAuth 2.0, así como otros endpoints útiles para implementar la autentificación en tus aplicaciones.
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
Autentificació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 de interfaz soporta la autentificación de PKCE.
Parámetros de consulta
Solicitud
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
Respuesta
Después de llamar este punto de interfaz, el usuario se redirige a la URL de redirección especificada con el código de autorización en una code parámetro de consulta. El código de autorización:
- Tiene una vida útil de un minuto.
- Solo se puede canjear una vez.
- Es inválido después de un uso.
Intercambio de fichas
Para obtener fichas para acceder a las API, intercambia un código de autorización por un conjunto de fichas de confianza. Todos los puntos de finalización de fichas soportan dos tipos de autentificación del cliente:
- Esquema de autentificación HTTP básico con un encabezado de autorización: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID del cliente y secreto en el cuerpo de la solicitud como parámetros.
La siguiente lista describe las varias fichas que recibes de este punto de final.
Token de acceso - Representa la autorización de un creador o usuario para que un tercer servicio de aplicaciones acceda a sus recursos protegidos de Roblox. Es una cadena que denota un alcance, una vida útil y otros atributos de acceso. Una vez que el servidor de autorización de Roblox emita un token de acceso a un aplicación (app), el token:
- Es válido durante 15 minutos.
- Puede usarse varias veces antes de que caduque.
- Puede ser inválido antes de que caduque si un usuario de aplicación revoca la autorización.
Token de actualización de - Actualiza 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 ID token. Un token de actualización:
- Es válido durante 90 días.
- Solo se puede usar una vez antes de que caduque para actualizar fichas.
- Puede ser inválido antes de que caduque si un usuario de aplicación revoca la autorización.
Token de identificación ID - Proporciona prueba de que la identificación de un usuario ha sido autenticada. Su contenido depende de los escenarios solicitados y puede contener información básica del usuario, incluida la identificación de su nombre de usuario y contraseña. El token de identificación es solo para propósitos de autentificación de identificación y no proporciona acceso a ningún recurso de Roblox.
POST v1/token
Obtener un conjunto de tokens con un código de autorización.
Solicitud
(x-www-form-urlencoded)
| Clave | Valor | | -------------- | | | code | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | authorization_code | | client_id | <client_id> | | client_secret | 1> <client_secret>1>
Solicitud de Token de Ejemplo
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 de token de ejemplo
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Obtener un conjunto de tokens con un token de actualización.
Solicitud
(x-www-form-urlencoded)
| Clave | Valor | | -------------- | |授权_类型 | refresh_ token | | refresh_ token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Solicitud de actualización de tokens de ejemplo
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
Solicitud de actualización de tokens de ejemplo
{
"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 está actualmente válido y no ha expirado aún. Útil para la validación sin estado. Úselo solo si la API que está accediendo no requiere un recurso, como Assets API, o si solo desea ver reclamos específicos del token.
Solicitud
(x-www-form-urlencoded)
| Clave | Valor | | -------------- | --- | | token | <access_token> , <refresh_token> o <id_token> | | client_id | 1> <client_id>1> | | client_secret | 4> <客户_
Solicitud de tokens de Introspect
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
Respuesta de Token de Introspect de Ejemplo
{
"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
Compruebe si un token puede acceder a un recurso específico al obtener la lista de recursos de usuario que el usuario dio permiso. Esto es útil para la validación estatal.
Solicitud
(x-www-form-urlencoded)
| Clave | Valor | | -------------- | | | token | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Solicitud de recursos de tokens de ejemplo
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
Ejemplo de respuesta de recursos de tokens
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
}
}
}
]
}
POST v1/token/revoke
Revoca una sesión de autorización usando el token de actualización proporcionado.
Solicitud
(x-www-form-urlencoded)
| Clave | Valor | | -------------- | | | token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Solicitud de reembolso de tokens de ejemplo
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 de usuario.
Solicitud
cabecera de autorización : Authorization: Bearer <access_token>Ejemplo Solicitud de Información del Usuario
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Respuesta
Puede usar el valor de sub para identificar únicamente al usuario. Los usuarios pueden cambiar su nombre de usuario de Roblox y nombre de pantalla, por lo que no los use como identificadores únicos para referirse a los usuarios en su aplicación (app).
| Reclamar | Descripción | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Ejemplo de usuario con alcance 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 alcance de perfil
{
"sub": "1516563360"
}
Descubrimiento
El OpenID Connect (OIDC) DiscoveryDocument es un documento JSON que contiene metadatos sobre los detalles de la configuración de Open Cloud, incluida una lista de escopios y reclamos relacionados con la identificación que son admitidos. Puede usarlo para descubrir dinámicamente información sobre los puntos de finalización de Open Cloud OAuth 2.0 y la configuración, como el punto de autorización, el punto de token y el establecerde claves públicas.
Después de recuperar y obtener el documento de descubrimiento de la URL del documento de descubrimiento, puedes inspeccionar y obtener manualmente los campos en la respuesta para verificar la información, o puedes crear tu propia biblioteca personalizada para los campos en la respuesta para automatizar tu flujo de trabajo.
GET .well-known/openid-configuration
Respuesta
Todas las respuestas de Discovery se basan en el mismo esquema que la siguiente respuesta de ejemplo.
Ejemplo de respuesta del documento de descubrimiento
{
"issuer": "https://apis.roblox.com/oauth/",
"authorization_endpoint": "https://api.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 / revocar",
"resources_endpoint": "https://apis.roblox.com/oauth/v1/ token / recursos",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://api.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://crear.roblox.com/dash/credenciales",
"service_documentation": "https://crear.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"
]
}