Este documento describe los puntos finales que llama para implementar el flujo de código de autorización de OAuth 2.0, así como otros puntos finales útiles para implementar la autenticación en sus 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
Autorización
GET v1/authorize
Obtiene la 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 de PKCE.
Parámetros de consulta
Nombre | Descripción | Requerido | Ejemplo |
---|---|---|---|
client_id | El ID de cliente de la aplicación (app). | yes | 816547628409595165403873012 |
redirect_uri | La URL a la que se redirigen los usuarios después de completar el flujo de autorización. | yes | https://www.roblox.com/example-redirect |
alcance | Los alcances solicitados, espacio delimitado.Usa el alcance openid para recibir un token de identificación.Usa el alcance openid y profile para obtener más información del usuario. | sí | openid profile |
tipo de respuesta | Las credenciales que la aplicación quiere devolver.El predeterminado es el introducirde autorización de código de otorgación. | yes | none , code |
prompt | Especifica qué páginas de autenticación y consentimiento se muestran a los usuarios.Ciertas pantallas son requeridas para aplicaciones de terceros y no se pueden omitir. | no | none , login , consent , select_account |
nonce | El número criptográfico que vincula la ficha con el cliente. | no | <random_value_1> |
estado | Un valor opaco que evita la falsificación de solicitudes entre sitios, un tipo de ataque malicioso.Devuelto a la aplicación después de la autorización. | no | <app-provided-opaque-value> |
code_challenge | La cadena resultante de aplicar el code_challenge_method al code_verifier. | no | Base64-URL-encoded string |
code_challenge_method | La función que se aplica al code_verifier . | no | S256 |
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 final, el usuario se redirige 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 de un minuto.
- Solo se puede redimir una vez.
- Es inválido después de un uso.
Intercambio de intercambiar
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 token admiten dos tipos de autenticación del cliente:
- Esquema de autenticación HTTP básica 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 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 alcance, una vida útil y otros atributos de acceso específicos.Una vez que el servidor de autorización de Roblox emite un token de acceso a una aplicación (app), el token:
- Es válido por 15 minutos.
- Se puede utilizar múltiples veces antes de que expire.
- Se puede invalidar antes de que expire si un usuario de la aplicación revoca la autorización.
Actualizar token - Actualiza una sesión de autorización.Una aplicación puede usar la ficha de actualización para obtener un nuevo conjunto de fichas, que incluye una ficha de acceso, una ficha de actualización y una ficha de identificación.Una ficha de actualización:
- Es válido por 90 días.
- Solo se puede usar una vez antes de que expire para actualizar tokens.
- Se puede invalidar antes de que expire si un usuario de la aplicación revoca la autorización.
Token de ID - Proporciona prueba de que la identidad de un usuario se ha autenticado.Su contenido depende de los alcances solicitados y puede contener información básica del usuario, incluido el nombre de visualización de Roblox y el nombre de usuario del usuario.El token de ID es solo para fines de autenticación de identidad 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 |
---|---|
código | <authorization code> |
código_verificador | <pkce code verifier value> |
tipo_de_grante | autorización_de_código |
client_id | <client_id> |
client_secret | <client_secret> |
Ejemplo de solicitud de obtención de 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 obtención de respuesta de token
{
"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 |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Ejemplo de solicitud de actualización de 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 solicitud de actualización de token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Recibir información sobre una token.Verifica si el token es actualmente válido y aún no ha expirado.Útil para la validación sin estado.Úselo solo si la API a la que está accediendo no requiere un recurso, como la API de activos, 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 | <client_id> |
client_secret | <client_secret> |
Ejemplo de solicitud de token de introspección
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 introspección 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 obteniendo la lista de recursos de usuario por los 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> |
Ejemplo de solicitud de recursos de token obtenidos
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 alcance ha concedido acceso a un recurso propiedad del autorizante owner .
Respuesta de obtención de recursos de token de ejemplo
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Revocar 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> |
Ejemplo de solicitud de retirada de 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 la ID de usuario de Roblox y otros metadatos de usuario.
Solicitud
Encabezado de autorización : Authorization: Bearer <access_token>Ejemplo de solicitud de 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 forma única al usuario.Los usuarios pueden cambiar su nombre de usuario de Roblox y su nombre de visualización, así que no los use como identificadores únicos para referirse a los usuarios en su aplicación (app).
Reclamar | Descripción |
---|---|
sub | ID de usuario de Roblox. |
nombre | Nombre de visualización de Roblox. |
apodo | Nombre de visualización de Roblox. |
nombre de usuario preferido | nombre de usuario de Roblox |
created_at | Tiempo de creación de la cuenta de Roblox como un timbre de Unix. |
perfil | URL del perfil de la cuenta de Roblox. |
imagen de retrato de avatar de Roblox.Puede ser nulo si la imagen de disparo a la cabeza del avatar aún no se ha generado o ha sido moderada. |
Ejemplo de usuario con alcance de perfil
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/usuarios/1516563360/perfil",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Ejemplo de usuario sin alcance de perfil
{
"sub": "1516563360"
}
Descubre
El documento de descubrimiento de OpenID Connect (OIDC) es un documento JSON que contiene metadatos sobre los detalles de la configuración de la nube abierta, incluida una lista de ámbitos y reclamos relacionados con la identidad que se admiten.Puede usarlo para descubrir dinámicamente información sobre los puntos finales y la configuración de Open Cloud OAuth 2.0, como el punto final de autorización, el punto final de token y el establecerde claves públicas.
Después de recuperar y recuperar el documento de descubrimiento de la URL del documento de descubrimiento, puedes inspeccionar manualmente los campos en la respuesta para verificar la información o crear tu propio mapa de biblioteca personalizado a los campos en el esquema de respuesta para automatizar tu flujo de trabajo.
GET .well-known/openid-configuration
Respuesta
Todas las respuestas de documento de descubrimiento siguen el mismo esquema que la respuesta de ejemplo siguiente.
Respuesta de documento de descubrimiento de ejemplo
{
"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://crear.roblox.com/dashboard/credenciales",
"service_documentation": "https://crear.roblox.com/docs/referencia/nube",
"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"
]
}