Este documento descreve os endpoints que você chama para implementar o fluxo de código de autorização OAuth 2.0, bem como outros endpoints úteis para implementar a autenticação em seus aplicativos.
URL Basehttps://apis.roblox.com/oauth
EndpointsGET v1/authorizePOST v1/tokenPOST v1/token/introspectPOST v1/token/resourcesPOST v1/token/revokeGET v1/userinfoGET .well-known/openid-configuration
Autorização
GET v1/authorize
Obtém autorização do usuário para autenticar com sua conta Roblox. Espera um URL de autorização válido construído com os parâmetros especificados. Este endpoint suporta autorização PKCE.
Parâmetros de consulta
| Nome | Descrição | Obrigatório | Exemplo |
|---|---|---|---|
| client_id | O ID do cliente do aplicativo. | sim | 816547628409595165403873012 |
| redirect_uri | O URL para o qual os usuários são redirecionados após completar o fluxo de autorização. | sim | `https://www.roblox.com/example-redirect`` |
| scope | Os escopos solicitados, delimitados por espaço. Use o escopo openid para receber um token de ID. Use os escopos openid e profile para obter mais informações do usuário. | sim | openid profile |
| response_type | As credenciais que o aplicativo deseja retornar. O padrão é o tipo de concessão de código de autorização. | sim | none, code |
| prompt | Especifica quais páginas de autenticação e consentimento são exibidas aos usuários. Certas telas são obrigatórias para aplicativos de terceiros e não podem ser puladas. | não | none, login, consent, select_account |
| nonce | O número criptográfico que vincula o token ao cliente. | não | <random_value_1> |
| state | Um valor opaco que previne ataques de falsificação de solicitação entre sites. Retornado para o aplicativo após a autorização. | não | <app-provided-opaque-value> |
| code_challenge | A string resultante da aplicação do code_challenge_method ao code_verifier. | não | String codificada em Base64-URL |
| code_challenge_method | A função que é aplicada ao code_verifier. | não | S256 |
Requisição
Exemplo de Requisição Direcionando para o Fluxo de Autorizaçãohttps://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
Resposta
Após chamar este endpoint, o usuário é redirecionado para o URL de redirecionamento especificado com o código de autorização em um parâmetro de consulta code. O código de autorização:
- Tem uma vida útil de um minuto.
- Pode ser utilizado apenas uma vez.
- É inválido após uma utilização.
Troca de token
Para obter tokens para acessar APIs, troque um código de autorização por um conjunto de tokens confidenciais. Todos os endpoints de token suportam dois tipos de autenticação de cliente:
- Esquema de autenticação HTTP Basic com um cabeçalho de autorização: Authorization: Basic Base64 encoded(<client_id>:<client_secret>).
- ID de cliente e segredo no corpo da solicitação como parâmetros.
A lista a seguir descreve os diversos tokens que você recebe deste endpoint.
Token de acesso - Representa a autorização de um criador ou usuário para um aplicativo de terceiros acessar seus recursos protegidos do Roblox. É uma string que denota um escopo específico, vida útil e outros atributos de acesso. Uma vez que o servidor de autorização do Roblox emite um token de acesso para um aplicativo, o token:
- É válido por 15 minutos.
- Pode ser usado várias vezes antes de expirar.
- Pode ser invalidado antes de expirar se um usuário do aplicativo revogar a autorização.
Token de atualização - Atualiza uma sessão de autorização. Um aplicativo pode usar o token de atualização para obter um novo conjunto de tokens, que inclui um token de acesso, um token de atualização e um token de ID. Um token de atualização:
- É válido por 90 dias.
- Pode ser usado apenas uma vez antes de expirar para atualizar tokens.
- Pode ser invalidado antes de expirar se um usuário do aplicativo revogar a autorização.
Token de ID - Fornece prova de que a identidade de um usuário foi autenticada. Seu conteúdo depende dos escopos solicitados e pode conter informações básicas do usuário, incluindo o nome de exibição e o nome de usuário do Roblox. O token de ID é apenas para fins de autenticação de identidade e não fornece acesso a qualquer recurso do Roblox.
POST v1/token
Obtenha um conjunto de tokens com um código de autorização.
Requisição
(x-www-form-urlencoded)
| Chave | Valor |
|---|---|
| code | <authorization code> |
| code_verifier | <pkce code verifier value> |
| grant_type | authorization_code |
| client_id | <client_id> |
| client_secret | <client_secret> |
Exemplo de Requisição para Obter Tokencurl --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'
Resposta
Exemplo de Resposta para Obter Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Obtenha um conjunto de tokens com um token de atualização.
Requisição
(x-www-form-urlencoded)
| Chave | Valor |
|---|---|
| grant_type | refresh_token |
| refresh_token | <refresh_token> |
| client_id | <client_id> |
| client_secret | <client_secret> |
Exemplo de Requisição para Atualizar Tokencurl --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'
Resposta
Exemplo de Resposta para Atualizar Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Recebe informações sobre um token. Verifica se o token está atualmente válido e não expirou ainda. Útil para validação sem estado. Use apenas se a API que você está acessando não requer um recurso, como a API de Assets, ou se você apenas quer ver reivindicações específicas do token.
Requisição
(x-www-form-urlencoded)
| Chave | Valor |
|---|---|
| token | <access_token>, <refresh_token> ou <id_token> |
| client_id | <client_id> |
| client_secret | <client_secret> |
Exemplo de Requisição para Introspecção do Tokencurl --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'
Resposta
Exemplo de Resposta para Introspecção do 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
Verifique se um token pode acessar um recurso específico obtendo a lista de recursos do usuário que o usuário deu permissão. Isso é útil para validação com estado.
Requisição
(x-www-form-urlencoded)
| Chave | Valor |
|---|---|
| token | <access_token> |
| client_id | <client_id> |
| client_secret | <client_secret> |
Exemplo de Requisição para Obter Recursos do Tokencurl --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'
Resposta
O valor U em ids indica que um escopo concedeu acesso a um recurso de propriedade do owner que autoriza.
Exemplo de Resposta para Obter Recursos do Token
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Revogue uma sessão de autorização usando o token de atualização fornecido.
Requisição
(x-www-form-urlencoded)
| Chave | Valor |
|---|---|
| token | <refresh_token> |
| client_id | <client_id> |
| client_secret | <client_secret> |
Exemplo de Requisição para Revogar Tokencurl --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'
Resposta
200 OK com uma resposta vazia
Informações do Usuário
GET /v1/userinfo
Obtém o ID do usuário do Roblox e outros metadados do usuário.
Requisição
Cabeçalho de autorização: Authorization: Bearer <access_token>
Exemplo de Requisição para Obter Informações do Usuáriocurl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Resposta
Você pode usar o valor sub para identificar exclusivamente o usuário. Os usuários podem alterar seu nome de usuário e nome de exibição do Roblox, então não os use como identificadores únicos para se referir a usuários em seu aplicativo.
| Reivindicação | Descrição |
|---|---|
| sub | ID do usuário do Roblox. |
| name | Nome de exibição do Roblox. |
| nickname | Nome de exibição do Roblox. |
| preferred_username | Nome de usuário do Roblox. |
| created_at | Hora de criação da conta Roblox como um timestamp Unix. |
| profile | URL do perfil da conta Roblox. |
| picture | Imagem do retrato do avatar do Roblox. Pode ser null se a imagem do retrato do avatar ainda não foi gerada ou foi moderada. |
Exemplo de Usuário com Escopo 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"
}
Exemplo de Usuário sem Escopo de Perfil
{
"sub": "1516563360"
}
Descoberta
O Documento de Descoberta (OIDC) OpenID é um documento JSON que contém metadados sobre os detalhes de configuração do Open Cloud, incluindo uma lista de escopos e reivindicações relacionadas à identidade que são suportadas. Você pode usá-lo para descobrir dinamicamente informações sobre os endpoints e configuração do Open Cloud OAuth 2.0, como o endpoint de autorização, endpoint de token e conjunto de chaves públicas.
Após recuperar e buscar o Documento de Descoberta da URI do documento de descoberta, você pode inspecionar manualmente os campos na resposta para verificar as informações ou pode criar sua própria biblioteca personalizada mapeando para campos no esquema de resposta para automatizar seu fluxo de trabalho.
GET .well-known/openid-configuration
Resposta
Todas as respostas do Documento de Descoberta seguem o mesmo esquema que o exemplo de resposta a seguir.
Exemplo de Resposta do Documento de Descoberta
{
"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"
]
}