OAuth 2.0-Authentifizierung

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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/authorize
POST v1/token
POST v1/token/introspect
POST v1/token/resources
POST v1/token/revoke
GET v1/userinfo
GET .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

NameBeschreibungErforderlichBeispiel
client_idDie Client-ID der App.ja816547628409595165403873012
redirect_uriDie URL, auf die Benutzer nach Abschluss des Autorisierungsflusses umgeleitet werden.jahttps://www.roblox.com/example-redirect
BereichDie 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.jaopenid profile
response_typeDie Credentials, die die App zurückgeben möchte.Der Standard ist der eingeben.janone , code
promptLegt fest, welche Authentifizierungs- und Zustimmungsseiten den Benutzern angezeigt werden.Bestimmte Bildschirme sind für Drittanwendungen erforderlich und können nicht übersprungen werden.neinnone , login , consent , select_account
NonceDie kryptografische Nummer, die das Token mit dem Client verbindet.nein<random_value_1>
ZustandEin 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_challengeDie daraus resultierende Zeichenkette der Anwendung des code_challenge_method auf die code_verifier .neinBase64-URL-codierte Zeichenfolge
code_challenge_methodDie Funktion, die auf die code_verifier angewendet wird.nichtS256

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:

  1. HTTP-Basisauthentifizierungsschema mit einer Autorisierungsheader: Authorization: Basic Base64 encoded(<client_id>:<client_secret>) .
  2. 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üsselWert
code<authorization code>
code_verifier<pkce code verifier value>
grant_typeAutorisierungscode
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üsselWert
grant_typerefresh_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üsselWert
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üsselWert
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üsselWert
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.

AnspruchBeschreibung
subRoblox-Benutzer-ID.
nameRoblox-Anzeigename.
SpitznameRoblox-Anzeigename.
preferred_usernameRoblox-Benutzername.
created_atZeitpunkt der Erstellung des Roblox-Kontos als Unix-Timestamp.
ProfilRoblox-Konto-Profil-URL.
BildRoblox-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"
]
}