Gebruikers en gescoope gebruikers-ID's

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

Roblox blootlegt één effectieve gebruikers-ID voor elke gebruiker in elk spel, groep of app. Afhankelijk van de geschiedenis van de gebruiker met dat domein, is hun effectieve gebruikers-ID ofwel hun globale gebruikers-ID of een gescoope gebruikers-ID. Deze pagina legt uit hoe effectieve gebruikers-ID's werken en hoe je het User type in je spelcode kunt gebruiken.

De volgende concepten zijn centraal voor gebruikersidentificatie:

ConceptBeschrijving
GebruikerEen persistent account op Roblox.
SpelerDe representatie van een gebruiker binnen het datamodel van een draaiend spel (zie Spelers).
User datatypeEen datatype dat de effectieve gebruikers-ID van een gebruiker en de domeincontext bevat. Dit is de standaardidentificator voor het verwijzen naar gebruikers in spelcode.
Globale gebruikers-IDDe gebruikers-ID op platformniveau die Roblox aan elk account toekent. Het is wereldwijd uniek binnen Roblox.
Gescoope gebruikers-IDEen gebruikers-ID die binnen een specifiek domein is toegewezen. De gescoope gebruikers-ID's van een gebruiker zijn verschillend in elk spel, groep of app.
Effectieve gebruikers-IDDe enkele gebruikers-ID die Roblox blootlegt voor een gebruiker binnen een domein.
Pre-rollout gebruikerEen gebruiker die voor het eerst met een domein in aanraking kwam voordat de rollout van gescoope gebruikers-ID's plaatsvond. In dat domein blijft hun effectieve gebruikers-ID hun globale gebruikers-ID.
Post-rollout gebruikerEen gebruiker die voor het eerst met een domein in aanraking kwam na de rollout van gescoope gebruikers-ID's. In dat domein is hun effectieve gebruikers-ID een gescoope gebruikers-ID.

Effectieve gebruikers-ID's en domeinen

Elke gebruiker heeft één effectieve gebruikers-ID binnen een specifiek spel, groep of app. Roblox blootlegt geen aparte globale en gescoope gebruikers-ID's voor dezelfde gebruiker in dat domein:

  • Een pre-rollout gebruiker heeft hun globale gebruikers-ID als hun effectieve gebruikers-ID.
  • Een post-rollout gebruiker heeft een gescoope gebruikers-ID als hun effectieve gebruikers-ID. Die ID is alleen betekenisvol binnen dat domein.

In spelcode geven Player.UserId en Player.User.Id beide deze effectieve gebruikers-ID terug en hebben altijd dezelfde numerieke waarde (Player.User.Id is gelijk aan Player.UserId), zodat je code geen vertakkingslogica hoeft te gebruiken om tussen hen te kiezen.

Roblox scope gebruikersidentiteit over drie soorten domeinen:

DomeinGescoope naarVoorbeeld
Ervaring (Enum.DomainType.EXPERIENCE)Een specifieke ervaringDe ID van een speler in jouw ervaring
GroepEen specifieke Roblox-groep (gemeenschap)De ID van een lid in jouw groep
OAuth-app (Enum.DomainType.OAUTH)Een specifieke OAuth-toepassingDe ID van een gebruiker in jouw externe tool

Hoe effectieve gebruikers-ID's werken

Wanneer een speler jouw spel binnenkomt, hebben ze één effectieve gebruikers-ID voor dat spel. De effectieve gebruikers-ID van een post-rollout gebruiker is een gescoope gebruikers-ID die uniek is voor dat spel. Ze ontvangen een andere gescoope gebruikers-ID in elk ander spel, groep of app waar ze ook een post-rollout gebruiker zijn. Dit betekent:

  • Effectieve gebruikers-ID's zijn gehele getallen, of ze nu globaal of gescoope zijn.
  • Effectieve gebruikers-ID's zijn stabiel over sessies binnen hetzelfde domein.
  • Een gescoope gebruikers-ID botst niet met een bestaande globale gebruikers-ID.
  • Dezelfde numerieke waarde kan in verschillende domeinen voor verschillende gebruikers verschijnen. De unieke sleutel is de combinatie van het domein (domeintype en domein-ID) en de effectieve gebruikers-ID.

Voorbeeldscenario

Het volgende voorbeeld demonstreert hoe verschillende spellen dezelfde gebruiker refereren:

ScenarioGebruikerscontextEffectieve gebruikers-ID gezien door het spel
Gebruiker verbindt met Spel APre-rollout gebruiker123 (globale gebruikers-ID, onveranderd)
Gebruiker verbindt met Spel BPost-rollout gebruiker500789 (gescoope gebruikers-ID voor Spel B)
Gebruiker verbindt met Spel CPost-rollout gebruiker302441 (gescoope gebruikers-ID voor Spel C)

Pre-rollout gebruikers

Als een speler een pre-rollout gebruiker is in jouw spel, blijft hun effectieve gebruikers-ID hun globale gebruikers-ID in dat spel. Zowel Player.UserId als Player.User.Id geven die globale gebruikers-ID terug. Roblox blootlegt geen tweede gebruikers-ID voor de speler in dat spel. Dit zorgt ervoor dat bestaande datastoresleutels, ranglijsten en inventarissen blijven werken zonder enige wijzigingen.

Groepdomein

Elke Roblox-groep is zijn eigen domein. Een gebruiker heeft één effectieve gebruikers-ID binnen een groep, gescheiden van hun effectieve gebruikers-ID in elk spel of OAuth-toepassing:

Werken met het Gebruikerstype

User is de standaardmanier om gebruikers in spelcode te identificeren. Een User waarde bevat de effectieve gebruikers-ID samen met het domeintype en de domein-ID, zodat de identiteitscontext altijd met de identificator meereist. Voor volledige API-details, zie de User referentie.

Verkrijg een Gebruiker van een Speler

De primaire manier om een User te verkrijgen is van een verbonden Player via Player.User:

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("Effectieve gebruikers-ID:", user.Id) -- Komt altijd overeen met player.UserId
print("Domeintype:", user.DomainType)
print("Domein-ID:", user.DomainId)
end)

Constructie van een Gebruiker vanuit een ID

Om een User te maken vanuit een bekende effectieve gebruikers-ID binnen het huidige spel, gebruik User.fromId():

local user = User.fromId(knownUserId)

Gebruik van Gebruiker met engine API's

Engine API's die een gebruikers-ID-parameter accepteren, accepteren ook User waarden direct. Het gebruik van User wordt aanbevolen:

-- Beide vormen werken:
BadgeService:AwardBadge(player.User, badgeId) -- Aanbevolen
BadgeService:AwardBadge(player.UserId, badgeId)
-- Beide vormen werken:
local target = Players:GetPlayerByUserId(player.User) -- Aanbevolen
local target = Players:GetPlayerByUserId(someUserId)

Wanneer een numerieke gebruikers-ID wordt doorgegeven aan een engine API die gebruikers-ID's accepteert, wordt deze automatisch intern verpakt in een User.

Engine API's die gebruikers-ID's retourneren

Engine API's die numerieke gebruikers-ID's retourneren, geven de effectieve gebruikers-ID van de gebruiker terug:

  • Pre-rollout gebruikers — de API retourneert de globale gebruikers-ID van de gebruiker.
  • Post-rollout gebruikers — de API retourneert de gescoope gebruikers-ID van de gebruiker.

Player.UserId, Player.User.Id, en andere engine API's geven allemaal dezezelfde effectieve gebruikers-ID voor een gebruiker in jouw spel terug, zodat bestaande code die numerieke gebruikers-ID-velden leest blijft werken zonder vertakkingslogica.

Open Cloud verzoeken en antwoorden gebruiken dezelfde effectieve gebruikers-ID voor het doeldomein. Ze blootstellen geen tweede gebruikers-ID voor dezelfde gebruiker in dat domein.

Opslaan van gebruikersidentiteit

Gebruik een numerieke effectieve gebruikers-ID alleen om een gebruiker binnen een enkel domein te identificeren. Een datastoresleutel in één spel kan user.Id direct gebruiken:

local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, data)

Wanneer een ander domein de opgeslagen identiteit leest, zoals een OAuth-app die gebruikers modereert, sla de string op van ToString(). De string codeert de domeincontext samen met de effectieve gebruikers-ID. Het gebruik van alleen het geheel kan een actie toepassen op de verkeerde gebruiker wanneer hetzelfde nummer een andere gebruiker in een ander domein identificeert.

local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Later, herstel vanuit de string
local user = User.fromString(encoded)

Voor meer details over serialisatiegaranties, zie de User referentie.

Beste praktijken

  • Gebruik Player.User als de standaardidentificator in nieuwe code.
  • Gebruik de numerieke effectieve gebruikers-ID alleen binnen een enkel domein, zoals datastoresleutels voor één spel.
  • Gebruik ToString() en fromString() wanneer een ander domein de opgeslagen identiteit leest.

Wanneer Gebruiker of Speler te gebruiken

  • Gebruik Player voor acties binnen de server: karakterbeweging, GUI, teleportatie, chat, inventaris.
  • Gebruik User voor identiteit die langer meegaat dan een sessie: datastores, Open Cloud-tools, cross-game verwijzingen.
©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.