被遗忘权(RTBF) 使您可以声明哪些键和数据存储包含用户的数据。当 Roblox 处理您游戏的 RTBF 请求时,系统会使用这些模板自动删除匹配的数据。您可以通过 数据存储管理器 在创作者中心以可视化方式配置模板,或者通过开放云 配置 API 以编程方式配置。
自动化 RTBF
要使用自动化 RTBF 处理,您必须定义删除模板。这些模板告诉 Roblox 哪些数据存储或键属于特定用户。您最多可以有 100 个模板来识别您的用户数据。
删除模板
自动化 RTBF 通过匹配模式工作。您使用 {UserId} 令牌为您的用户数据定义一个模板。当 Roblox 收到被遗忘权请求时,系统将该令牌替换为请求者的实际 ID,并扫描您的数据存储以查找要删除的匹配项。
合格要求
要使某项条目符合自动删除的资格,它必须满足以下标准:
- 存储类型 — 用户数据应存储在标准数据存储或有序数据存储中。仅支持标准数据存储的整个数据存储的删除。
- 标识符 — 用户 ID 必须是数据存储或键的 Name 或 Scope 的一部分。
- 格式 — ID 必须能够通过静态字符串模式识别(例如,User_{UserId})。
通过数据存储管理器配置自动化 RTBF
创作者中心提供了一个可视化界面来管理您的 RTBF 模板,而无需使用命令行。
导航到 创作者中心。
选择您想要配置的游戏。
在左侧导航菜单中,转到 配置 ⟩ 数据存储管理器。
选择 RTBF 删除 标签。
点击 创建模板。
选择 类型(标准数据存储、标准键 或 有序键)。
使用 {UserId} 令牌输入相应字段(例如,PlayerInventory_{UserId})。此令牌区分大小写。
仔细检查示例输出并点击 创建。

通过配置 API 配置自动化 RTBF
您还可以使用开放云配置 API 以编程方式管理 RTBF 模板。这对于自动化或大规模管理模板非常有用。
在创作者仪表板中,创建或编辑 API 密钥,为您希望自动化 RTBF 删除的每个宇宙包含 universe:read 和 universe:write 权限。有关更多详细信息,请参阅 管理 API 密钥。
模板作为名为 user_data_templates 的 JSON 配置存储。主要有两种类型:
- 键模板 — 标识特定键。需要 data_store_type (STANDARD 或 ORDERED)、data_store_name 和 key_pattern。scope_pattern 是可选的,但推荐使用。
- 数据存储模板 — 标识整个数据存储。需要 data_store_type(当前仅支持 STANDARD)和 data_store_pattern。
对于这两种模板类型,处理 RTBF 请求时,{UserId} 令牌会被用户的 ID 替换。
示例配置{"user_data_templates": [{"key_template": {"data_store_type": "STANDARD","data_store_name": "PlayerInventory","key_pattern": "User_{UserId}","scope_pattern": "Scope_{UserId}"}},{"key_template": {"data_store_type": "ORDERED","data_store_name": "PlayerLeaderboard","key_pattern": "User_{UserId}","scope_pattern": "global"}},{"data_store_template": {"data_store_type": "STANDARD","data_store_pattern": "Player_{UserId}_Save"}}]}接下来,通过开放云 配置 API 提交。在以下示例中,请在每个请求中替换 <API_KEY> 和 <UNIVERSE_ID>,并将所有请求发送到 DataStoresConfig 存储库。
通过 PUT 请求创建一个草稿,定义您的配置。如果草稿已经存在,则将此请求覆盖它。
curl --location --request PUT 'https://apis.roblox.com/creator-configs-public-api/v1/configs/universes/<UNIVERSE_ID>/repositories/DataStoresConfig/draft:overwrite' \--header 'x-api-key: <API_KEY>' \--header 'Content-Type: application/json' \--data-raw '{"entries": {"user_data_templates": [{"key_template": {"data_store_type": "STANDARD","data_store_name": "PlayerInventory","key_pattern": "User_{UserId}","scope_pattern": "Scope_{UserId}"}},{"key_template": {"data_store_type": "ORDERED","data_store_name": "PlayerLeaderboard","key_pattern": "User_{UserId}","scope_pattern": "global"}},{"data_store_template": {"data_store_type": "STANDARD","data_store_pattern": "Player_{UserId}_Save"}}]}}'通过 GET 请求验证您的草稿,以在它上线之前检索和查看草稿。
curl --location --request GET 'https://apis.roblox.com/creator-configs-public-api/v1/configs/universes/<UNIVERSE_ID>/repositories/DataStoresConfig/draft' \--header 'x-api-key: <API_KEY>'在验证之后,发送此 POST 请求以发布。撤销此操作的唯一方法是恢复先前的版本。此操作还要求与 API 密钥关联的帐户是 有资格发布游戏。
curl --location --request POST 'https://apis.roblox.com/creator-configs-public-api/v1/configs/universes/<UNIVERSE_ID>/repositories/DataStoresConfig/publish' \--header 'x-api-key: <API_KEY>' \--header 'Content-Type: application/json' \--data-raw '{"deploymentStrategy": "Immediate"}'发布后,使用此 GET 请求确认配置是实时的。
curl --location --request GET 'https://apis.roblox.com/creator-configs-public-api/v1/configs/universes/<UNIVERSE_ID>/repositories/DataStoresConfig/full' \--header 'x-api-key: <API_KEY>'
最佳实践
- 区分大小写 — 在您的模式中使用确切的 {UserId} 令牌。{userId} 等变体不被接受。
- 手动验证 — 在发布配置之前,使用 数据存储管理器 比较您的模式与您实时的 Luau 使用情况。
- 默认作用域 — 如果数据存储使用默认作用域,请在键模板中将 scope_pattern 设置为 "global"。
- 在测试游戏上测试端到端流程 — 为了完全验证您的模板,考虑创建一个测试游戏和虚拟帐户,使用虚拟数据填充该帐户的用户 ID,请求该虚拟帐户的 RTBF,并确保在处理该帐户后数据被删除。
- 确认删除 — 在您的实时游戏上进行入驻后,当 RTBF 请求出现在您的 Roblox 消息中时,请确认相应的数据在 30 天内被删除。