Dieses Dokument beschreibt Endpunkte, die Sie aufrufen, um den OAuth 2.0-Autorisierungscode-Fluss zu implementieren, sowie andere Endpunkte, die für die Implementierung der Authentifizierung in Ihren Apps 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 vom Benutzer, um sich mit seinem Roblox-Konto zu authentifizieren.Erwartet eine gültige Autorisierungs-URL, die mit den angegebenen Parametern erstellt wurde.Dieser Endpunkt unterstützt die PKCE-Autorisierung.
Anfrageparameter
Name | Beschreibung | Erforderlich | Beispiel |
---|---|---|---|
client_id | Die Client-ID der App. | ja | 816547628409595165403873012 |
redirect_uri | Die URL, auf die Benutzer nach Abschluss des Autorisierungsflusses umgeleitet werden. | ja | https://www.roblox.com/example-redirect |
Bereich | Die angeforderten Bereiche, zeitlich begrenzt.Verwende den openid Umfang, um ein ID-Token zu erhalten.Verwende die openid und profile Bereiche, um mehr Benutzerinformationen zu erhalten. | ja | openid profile |
response_type | Die Credentials, die die App zurückgeben möchte.Der Standard ist der eingeben. | ja | none , code |
prompt | Legt fest, welche Authentifizierungs- und Zustimmungsseiten den Benutzern angezeigt werden.Bestimmte Bildschirme sind für Drittanwendungen erforderlich und können nicht übersprungen werden. | nein | none , login , consent , select_account |
Nonce | Die kryptografische Nummer, die das Token mit dem Client verbindet. | nein | <random_value_1> |
Zustand | Ein undurchsichtiger Wert, der die Cross-Site-Anforderungsunterdrückung verhindert, eine Art böswilliger Angriff.Zurück an die App nach der Autorisierung. | nein | <app-provided-opaque-value> |
code_challenge | Die daraus resultierende Zeichenkette der Anwendung des code_challenge_method auf die code_verifier . | nein | Base64-URL-codierte Zeichenfolge |
code_challenge_method | Die Funktion, die auf die code_verifier angewendet wird. | nicht | S256 |
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
Nachdem dieser Endpunkt aufgerufen wurde, wird der Benutzer auf die angegebene Weiterleitungs-URL mit dem Autorisierungscode in einem code Anfrage-Parameter umgeleitet.Der Codes:
- Hat eine Lebensdauer von einer Minute.
- Kann nur einmal eingelöst werden.
- Gilt nach einer Verwendung als ungültig.
Umtausch
Um Token zum Zugriff auf APIs zu erhalten, tausche einen Autorisierungscode für eine Reihe vertraulicher Token ein.Alle Token-Endpunkte unterstützen zwei Arten der Client-Authentifizierung:
- HTTP-Basisauthentifizierungsschema mit einer Autorisierungsheader: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
- Client-ID und geheim im Request-Körper als Parameter.
Die folgende Liste beschreibt die verschiedenen Token, die du von diesem Endpunkt erhältst.
Zugriffs-Token - Repräsentiert die Autorisierung von einem Ersteller oder Benutzer für eine Drittanwendung, um ihre geschützten Roblox-Ressourcen zuzugreifen.Es ist eine Zeichenkette, die einen bestimmten Umfang, Lebensdauer und andere Zugriffsattributen kennzeichnet.Sobald der Roblox-Autorisierungsserver ein Zugriffs-Token an eine App herausgibt, wird das Token:
- Gilt für 15 Minuten.
- Kann mehrmals verwendet werden, bevor es abläuft.
- Kann vor Ablauf ungültig gemacht werden, wenn ein App-Benutzer die Autorisierung widerruft.
Aktualisierungstoken - Aktualisiert eine Autorisierungs Sitzung.Eine App kann das Aktualisierungstoken verwenden, um ein neues Set von Token zu erhalten, das einen Zugriffs-Token, ein Aktualisierungstoken und ein ID-Token enthält.Ein Aktualisierungstoken:
- Gilt für 90 Tage.
- Kann nur einmal verwendet werden, bevor es abläuft, um Token zu aktualisieren.
- Kann vor Ablauf ungültig gemacht werden, wenn ein App-Benutzer die Autorisierung widerruft.
ID-Token - Liefert Nachweise, dass die Identität eines Benutzers authentifiziert wurde.Sein Inhalt hängt von den angeforderten Bereichen ab und kann grundlegende Benutzerinformationen enthalten, einschließlich des Anzeigennamens und des Benutzernamens eines Benutzers bei Roblox.Das ID-Token dient nur zu Identitätsauthentifizierungszwecken und gewährt keinen Zugriff auf irgendeine Roblox-Ressource.
POST v1/token
Erhalte eine Reihe von Tokens mit einem Codes.
Anfrage
(x-www-form-urlencoded)
Schlüssel | Wert |
---|---|
code | <authorization code> |
code_verifier | <pkce code verifier value> |
grant_type | Autorisierungscode |
client_id | <client_id> |
client_secret | <client_secret> |
Beispiel Token-Anforderung 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 Token-Antwort erhalten
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token
Erhalten Sie eine Reihe von Tokens mit einem Aktualisierungstoken.
Anfrage
(x-www-form-urlencoded)
Schlüssel | Wert |
---|---|
grant_type | refresh_token |
refresh_token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Beispiel-Aktualisierungs-Token-Anfrage
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-Aktualisierungs-Token-Anfrage
{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}
POST v1/token/introspect
Erhalte Informationen zu einem Token.Überprüft, ob das Token derzeit gültig ist und noch nicht abgelaufen ist.Nützlich für statische Validierung.Verwenden Sie es nur, wenn die API, auf die Sie zugreifen, keine Ressource erfordert, wie die Assets-API, oder wenn Sie nur spezifische Ansprüche des Tokens sehen möchten.
Anfrage
(x-www-form-urlencoded)
Schlüssel | Wert |
---|---|
token | <access_token> , <refresh_token> oder <id_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Beispiel-Introspekt-Token-Anfrage
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-Introspekt-Token-Antwort
{
"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üfe, ob ein Token auf eine bestimmte Ressource zugreifen kann, indem du die Liste der Benutzerressourcen erhältst, für die der Benutzer die Berechtigung erteilt hat.Dies ist nützlich für die zustandsbasierte Validierung.
Anfrage
(x-www-form-urlencoded)
Schlüssel | Wert |
---|---|
token | <access_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Beispiel: Token-Ressourcen-Anfrage erhalten
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
Der Wert U in ids zeigt an, dass ein Scope Zugriff auf eine von der zustimmenden owner gehörende Ressource gewährt hat.
Beispiel-Token-Ressourcen-Antwort erhalten
{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
},
"creator": {
"ids": ["U"]
}
}
}
]
}
POST v1/token/revoke
Widerrufen Sie eine Autorisierungs session mit dem bereitgestellten Aktualisierungstoken.
Anfrage
(x-www-form-urlencoded)
Schlüssel | Wert |
---|---|
token | <refresh_token> |
client_id | <client_id> |
client_secret | <client_secret> |
Beispiel-Widerrufs-Token-Anfrage
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
Holen Sie sich die Roblox-Benutzer-ID und andere Benutzer-Metadaten.
Anfrage
Autorisierungsheader : Authorization: Bearer <access_token>Beispiel: Anfrage zur Bereitstellung von Benutzerinformationen
curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'
Antwort
Du kannst den Wert sub verwenden, um den Benutzer eindeutig zu identifizieren.Benutzer können ihren Roblox-Benutzernamen und ihren Displaynamen ändern, also verwende sie nicht als eindeutige Identifikatoren, um auf Benutzer in deiner App zu verweisen.
Anspruch | Beschreibung |
---|---|
sub | Roblox-Benutzer-ID. |
name | Roblox-Anzeigename. |
Spitzname | Roblox-Anzeigename. |
preferred_username | Roblox-Benutzername. |
created_at | Zeitpunkt der Erstellung des Roblox-Kontos als Unix-Timestamp. |
Profil | Roblox-Konto-Profil-URL. |
Bild | Roblox-Avatar-Headshot-Bild.Kann null sein, wenn das Avatar-Kopfbild noch nicht generiert oder moderiert wurde. |
Beispielbenutzer mit Profilbereich
{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/nutzer/1516563360/profil",
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/AvatarHeadshot/Png"
}
Beispielbenutzer ohne Profilbereich
{
"sub": "1516563360"
}
Entdeckung
Das Entdeckungsdokument OpenID Connect (OIDC) ist ein JSON-Dokument, das Metadaten über die Open-Cloud-Konfigurationsdetails enthält, einschließlich einer Liste von Identitätsbezogenen Bereichen und Behauptungen, die unterstützt werden.Sie können es verwenden, um dynamisch Informationen über Open Cloud OAuth 2.0-Endpunkte und Konfigurationen wie die Autorisierungs-Endpunkt, Token-Endpunkt und öffentlichen festlegenzu entdecken.
Nach dem Abrufen und Auslesen des Entdeckungsdokuments aus der Entdeckungsdokument-URI kannst du entweder manuell Felder in der Antwort überprüfen, um die Informationen zu überprüfen, oder du kannst deine eigene benutzerdefinierte Bibliothekskarte zu Feldern in der Antwortschema erstellen, um deinen Workflow zu automatisieren.
GET .well-known/openid-configuration
Antwort
Alle Antworten der Entdeckungsdokumente folgen dem gleichen Schema wie die folgende Beispielantwort.
Beispiel-Entdeckungsdokument-Antwort
{
"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/ressourcen",
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo",
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs",
"registration_endpoint": "https://erstellen.roblox.com/ashboard/credentials",
"service_documentation": "https://erstellen.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"
]
}