Este documento descreve os pontos finais que você chama para implementar o fluxo de código de autorização do OAuth 2.0, bem como outros pontos finais úteis para implementar a autenticação em seus aplicativos.
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
Autorização
GET v1/authorize
Obtém autorização do usuário para se autenticar com sua conta Roblox.Espera um URL de autorização válido construído com os parâmetros especificados.Este ponto de extremidade suporta a autorização PKCE.
Parâmetros de consulta
Nome | Descrição | Requerido | Exemplo |
---|---|---|---|
client_id | O ID do cliente do aplicativo. | sim | 816547628409595165403873012 |
redirect_uri | A URL para a qual os usuários são redirecionados de volta após o encerramento do fluxo de autorização. | sim | https://www.roblox.com/example-redirect |
escopo | Os escopos solicitados, espaço delimitado.Use o escopo openid para receber um token de ID.Use o escopo openid e profile para obter mais informações do usuário. | sim | openid profile |
tipo_de_resposta | As credenciais que o aplicativo quer devolvidas.O padrão é o tipo 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.Algumas telas são necessá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 liga o token com o cliente. | não | <random_value_1> |
estado | Um valor opaco que impede a falsificação de solicitações entre sites, um tipo de ataque malicioso.Passado de volta ao aplicativo após a autorização. | não | <app-provided-opaque-value> |
desafio_de_código | A string resultante de aplicar o code_challenge_method ao code_verifier. | não | Base64-URL-encoded string |
code_challenge_method | A função que é aplicada ao code_verifier . | não | S256 |
Solicitação
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
Resposta
Após chamar este ponto final, o usuário é redirecionado para a URL de redirecionamento especificada 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.
- Só pode ser resgatado uma vez.
- É inválido após um uso.
Troca de trocar/câmbio
Para obter tokens de acesso às APIs, troque um código de autorização por um conjunto de tokens confidenciais .Todos os pontos finais de token suportam dois tipos de autenticação do cliente:
- Esquema de Autenticação HTTP Básica com um cabeçalho de autorização: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- ID do cliente e segredo no corpo da solicitação como parâmetros.
A lista a seguir descreve os vários 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, tempo de vida e outros atributos de acesso específicos.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 de aplicativo revogar a autorização.
Atualizar token - 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.
- Só pode ser usado uma vez antes de expirar para atualizar tokens.
- Pode ser invalidado antes de expirar se um usuário de 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 usuário no Roblox.O token de ID é apenas para fins de autenticação de identidade e não fornece acesso a nenhum recurso do Roblox.
POST v1/token
Obtenha um conjunto de tokens com um código de autorização.
Solicitação
(x-www-form-urlencoded)
Chave | Valor |
---|---|
código | <authorization code> |
código_verificador | <pkce code verifier value> |
tipo_de_grante | autorização_de_código |
client_id | <client_id> |
client_secret | <client_secret> |
Exemplo de Solicitação de Obtenção 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'
Resposta
Exemplo de obtenção de resposta de 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.
Solicitaçã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 solicitação de atualização 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'
Resposta
Exemplo de solicitação de atualização de token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Receba informações sobre um token.Verifica se o token está atualmente válido e ainda não expirou.Útil para validação sem estado.Use apenas se a API que você está acessando não requer um recurso, como a API (Interface de Programação para Aplicações)de Recursos, ou se você apenas quiser ver reivindicações específicas do token.
Solicitaçã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 Solicitação de Token de Introspecção
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'
Resposta
Resposta de Token de Introspecção de Exemplo
{
"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 para os quais o usuário deu permissão.Isso é útil para validação estatal.
Solicitação
(x-www-form-urlencoded)
Chave | Valor |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemplo de solicitação de recursos de token de obtenção
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'
Resposta
O valor U em ids indica que um escopo concedeu acesso a um recurso de propriedade do autorizador owner.
Exemplo de obtenção de recursos de token de resposta
{
"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.
Solicitação
(x-www-form-urlencoded)
Chave | Valor |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Exemplo de solicitação de token de revogação
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'
Resposta
200 OK com uma resposta vazia
Informação do Usuário
GET /v1/userinfo
Obtém o ID de usuário do Roblox e outros metadados do usuário.
Solicitação
Cabeçalho de autorização : Authorization: Bearer <access_token>Exemplo de solicitação de informações do usuário
curl --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 exibiçãode usuário e nome de exibição do Roblox, então não use-os como identificadores exclusivos para se referir a usuários em seu aplicativo.
Afirmação | Descrição |
---|---|
sub | ID de usuário do Roblox. |
nome | Nome de exibição do Roblox. |
apelido | Nome de exibição do Roblox. |
preferred_username | Nome de usuário do Roblox. |
created_at | Tempo de criação da conta Roblox como um timestamp Unix. |
perfil | URL do perfil da conta Roblox. |
imagem de foto de avatar do Roblox.Pode ser nulo se a imagem de tiro na cabeça 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/usuários/1516563360/perfil",
"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 do OpenID Connect (OIDC) é um documento JSON que contém metadados sobre os detalhes da configuração da Nuvem Aberta, incluindo uma lista de âmbitos e reivindicações relacionadas à identidade que são suportados.Você pode usá-lo para descobrir dinamicamente informações sobre pontos de extremidade e configuração do Open Cloud OAuth 2.0, como o ponto de autorização, o ponto de token e o configurarde chaves públicas.
Depois de recuperar e obter o DiscoveryDocument do URI do DiscoveryDocument, você pode inspecionar manualmente os campos na resposta para verificar a informação ou criar seu próprio mapeamento de biblioteca personalizado 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 da resposta de exemplo a seguir.
Resposta de documento de descoberta de exemplo
{
"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://criar.roblox.com/ashboard/credenciais",
"service_documentation": "https://criar.roblox.com/docs/referência/nuvem",
"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"
]
}