Dieses Dokument beschreibt Endpunkte, die Sie aufrufen, um den OAuth 2.0-Authentisierungscode-Flow zu implementieren, sowie andere Endpunkte, die für die Umsetzung der Authentisierung in Ihren Anwendungen nützlich sind.
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
Autorisierung
GET v1/authorize
Erhalte die Autorisierung des Benutzers, um mit seinem Roblox-Konto zu authentifizieren. Erwartet eine gültige Autorisierungs-URL, die mit den angegebenen Parametern konstruiert ist. Dieser Endpunkt unterstützt die PKCE-Autorisierung.
Anfrageparameter
Name
Anfrage
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
Antwort.
Nach dem Aufrufen dieses Endpunkts wird der Benutzer mit dem Autorisierungscode in einer code Anfrage參數 auf die angegebene RedirektionsURL weitergeleitet. Der Codes:
- Hat eine Lebensdauer von einer Minute.
- Kann nur einmal eingelöst werden.
- Ist nach einer Verwendung ungültig.
Token-Austausch
Um Token zu erhalten, um auf APIs zuzugreifen, tausche einen Autorisierungscode für eine Reihe von vertraulichen Token. Alle Token-Endpunkte unterstützen zwei Arten von Client-Authentisierung:
- HTTP Basic Authentisierungsmechanismus mit einer Autorisierungs-Header: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- Client-ID und -Passwort im Anfragekörper als Argumente.
Die folgende Liste beschreibt die verschiedenen Token, die Sie von diesem Endpunkt erhalten.
Zugriff-Token - Repräsentiert die Autorisierung von einem Ersteller oder Benutzer für eine Drittsoftware, um auf seine geschützten Roblox-Ressourcen zuzugreifen. Es ist eine Zeichenfolge, die ein bestimmtes Spektrum, Lebenszeit und andere Zugriffs属ributen darstellt. Sobald der Roblox-Autorisierung-Server ein Zugriff-Token an eine App ausgibt, wird der Token:
- Gilt für 15 Minuten.
- Kann mehrmals verwendet werden, bevor es abläuft.
- Kann vor Ablauf des Zeitlimits deaktiviert werden, wenn ein App-Benutzer die Berechtigung zurückruft.
Token aktualisieren - Aktualisiert eine Sitzung. Eine App kann den Aktualisierungsschlüssel verwenden, um ein neues Set von Token zu erhalten, das einen Zugriffsschlüssel, einen Aktualisierungsschlüssel und einen ID-Schlüssel enthält. Ein Aktualisierungsschlüssel:
- Gilt für 90 Tage.
- Kann nur einmal verwendet werden, bevor es abläuft, um Token zu aktualisieren.
- Kann vor Ablauf des Zeitlimits deaktiviert werden, wenn ein App-Benutzer die Berechtigung zurückruft.
ID-Token - Stellt Beweise dar, dass die Identität eines Benutzers authentifiziert wurde. Sein Inhalt basiert auf den angeforderten Skalieren und kann grundlegende Benutzerinformationen enthalten, einschließlich eines Benutzers Roblox-Anzeigename und Benutzernamen. Der ID-Token ist nur für Identifizierungszwecke bestimmt und bietet keinen Zugriff auf irgendwelche Roblox-Ressourcen.
POST v1/token
Erhalten Sie ein Set von Tokens mit einem Codes.
Anfrage
(x-www-form-urlencoded)
| Schlüssel | Wert | | -------------- | ---------------- | | code | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | autorization_code | | client_id | <client_id> | | client_secret | 1> <client_secret>
Beispiel Token-Anfrage erhalten
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'
Antwort.
Beispiel-Antwort auf Token-Anfrage
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Erhalten Sie ein Set von Tokens mit einem Aktualisierungstoken.
Anfrage
(x-www-form-urlencoded)
| Schlüssel | Wert | | Enden | |授权_类型 | | refresh_Token | | |refresh_Token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Beispiel-Anfrage für Aktualisierungs-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'
Antwort.
Beispiel-Anfrage für Aktualisierungs-Token
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Erhalten Sie Informationen über ein Token. Überprüft, ob das Token derzeit gültig ist und noch nicht abgelaufen ist. Nützlich für die statische Überprüfung. Verwenden Sie es nur, wenn die API, auf die Sie zugreifen, keine Ressourcen erfordert, z. B. Assets-API, oder wenn Sie nur die spezifischen Anforderungen des Tokens sehen möchten.
Anfrage
(x-www-form-urlencoded)
| Schlüssel | Wert | | -------------- | ---------------- | | Token | <access_token> , <refresh_token> oder <id_token> | | client_id | 1> <client_id>1> | | client_secret | 4> <客户_秘密>
Beispiel-Anfrage für Introspect-Token
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'
Antwort.
Beispiel-Antwort auf Token-Eintrag
{
"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
Überprüfen Sie, ob ein Token auf ein bestimmtes Ressource zugreifen kann, indem er die Liste der benutzereigenen Ressourcen erhält, für die der Benutzer die Berechtigung gegeben hat. Dies ist nützlich für die state-Validierung.
Anfrage
(x-www-form-urlencoded)
| Schlüssel | Wert | | -------------- | | token | <access_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Beispiel Token-Ressourcen-Anfrage
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'
Antwort.
Beispiel: Token-Ressourcen-Antwort erhalten
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
}
}
}
]
}
POST v1/token/revoke
Rufe eine Autorisierungsitz mit dem angegebenen Aktualisierungstoken zurück.
Anfrage
(x-www-form-urlencoded)
| Schlüssel | Wert | | -------------- | | token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |
Beispiel-Anfrage für Widerrufs-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'
Antwort.
200 OK mit einer leeren Antwort
Benutzerinformationen
GET /v1/userinfo
Bekommt die Roblox-Benutzer-ID und andere Benutzer-Metadaten.
Anfrage
Autorisierungs-Header : Authorization: Bearer <access_token>Beispiel: Benutzerinfo-Anfrage
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Antwort.
Sie können den Wert sub verwenden, um den Benutzer eindeutig zu identifizieren. Benutzer können ihren Roblox-Benutzernamen und -Anzeigename ändern, so dass Sie sie nicht als einzigartige Merkmale verwenden, um auf Benutzer in Ihrer App zu verweisen.
| Beanspruche | Beschreibung | | | | Name | | Benutzername| Roblox
Beispiel Benutzer mit Profil-Zielfernrohr
{
"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"
}
Beispiel Benutzer ohne Profil-Zielfernrohr
{
"sub": "1516563360"
}
Entdeckung
Das OpenID Connect (OIDC) Discovery-Dokument ist ein JSON-Dokument, das Metadaten über die Open Cloud-KonfigurationsDetails enthält, einschließlich einer Liste von Identitätsbezogenen Schichten und Behauptungen, die unterstützt werden. Sie können es verwenden, um dynamisch Informationen über Open Cloud OAuth 2.0 Endpunkte und Konfigurationen zu entdecken, z. B. die Autorisierungspunkte, Token-Punkte und öffentliche festlegen.
Nach dem Abrufen und Abrufen des Discovery-Dokuments aus der Discovery-Dokument-URL können Sie entweder Felder in der Antwort aufrufen, um die Information zu überprüfen, oder Sie können Ihre eigene benutzerdefinierte Bibliothekskarte auf Felder im Antwort- Schema erstellen, um Ihren Workflow automatisieren.
GET .well-known/openid-configuration
Antwort.
Alle Datenantworten auf Discovery folgen dem gleichen Schema wie die folgende Beispielantwort.
Beispiel-Antwort auf Entdeckungs-Dokument
{
"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/токен/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://erstellen.roblox.com/daashboard/credentials",
"service_documentation": "https://erstellen.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"
]
}