Autenticación de 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 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/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 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

NombreDescripciónRequeridoEjemplo
client_idEl ID de cliente de la aplicación (app).yes816547628409595165403873012
redirect_uriLa URL a la que se redirigen los usuarios después de completar el flujo de autorización.yeshttps://www.roblox.com/example-redirect
alcanceLos 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.openid profile
tipo de respuestaLas credenciales que la aplicación quiere devolver.El predeterminado es el introducirde autorización de código de otorgación.yesnone , code
promptEspecifica 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.nonone , login , consent , select_account
nonceEl número criptográfico que vincula la ficha con el cliente.no<random_value_1>
estadoUn 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_challengeLa cadena resultante de aplicar el code_challenge_method al code_verifier.noBase64-URL-encoded string
code_challenge_methodLa función que se aplica al code_verifier .noS256

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:

  1. Esquema de autenticación HTTP básica con un encabezado de autorización: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. 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)

ClaveValor
código<authorization code>
código_verificador<pkce code verifier value>
tipo_de_granteautorizació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)

ClaveValor
grant_typerefresh_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)

ClaveValor
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)

ClaveValor
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)

ClaveValor
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).

ReclamarDescripción
subID de usuario de Roblox.
nombreNombre de visualización de Roblox.
apodoNombre de visualización de Roblox.
nombre de usuario preferidonombre de usuario de Roblox
created_atTiempo de creación de la cuenta de Roblox como un timbre de Unix.
perfilURL 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"
]
}