Roblox 为每个游戏提供一个 秘密 存储。秘密是您用于与外部服务进行身份验证的敏感信息,如 API 密钥、密码和访问令牌。例如,如果您想连接到第三方分析或音乐服务,您可能需要使用 API 密钥进行身份验证。
您可以将 API 密钥复制并粘贴到脚本中或将其添加到数据存储中,但这些方法存在不必要的安全风险。更好的解决方案是使用秘密存储,并通过一小组安全的方法访问密钥。
添加秘密
要查看、创建或编辑秘密,您必须是游戏所有者或组所有者。每个游戏最多可以有 500 个秘密。
导航到 创作者仪表板。
选择您的游戏,然后选择 秘密 ⟩ 创建秘密。
输入一个名称、秘密和适用的域。
- 名称作为秘密的唯一标识符,因此我们建议使用一些描述性的内容。
- 秘密可以长达 1,024 个字符。API 密钥和访问令牌应来自服务提供商,但如果秘密是密码,您可能是自己创建的。
- 您可以对域使用有限的通配符语法,例如 * 表示任何域(不推荐)或 *.example.com 表示 example.com 下的任何子域。特定域更好,例如 my.example.com。
本地秘密
出于安全原因,每个游戏的秘密存储仅对实时服务器或 协作测试 环境可用。如果您尝试在 本地游戏测试 中访问秘密,会收到 Can't find secret with given key 错误。如果您尝试从客户端脚本访问秘密,也会收到相同的错误。
要为本地测试指定秘密,请进入 Studio,然后转到 文件 ⟩ 体验设置 ⟩ 安全性。您可以在 秘密 部分创建新秘密以及编辑或删除现有秘密。


使用秘密
在游戏中使用秘密之前,您必须在 Studio 的 文件 ⟩ 体验设置 窗口的 安全性 部分启用 允许 HTTP 请求。然后在服务器脚本中调用 HttpService:GetSecret():
local HttpService = game:GetService("HttpService")local testSecret = HttpService:GetSecret("test_secret")
使用秘密存储的一个吸引力是您不能意外打印出一个秘密。以下代码输出的是您在创建秘密时提供的名称,而不是秘密本身:
print(testSecret) --> Secret(test_secret)
您无法直接操作字符串。相反,Secret 数据类型让您可以为秘密添加前缀和后缀,以帮助形成 URL 或插入类似 Bearer 的内容:
local HttpService = game:GetService("HttpService")local testSecret = HttpService:GetSecret("test_secret")local prefix = "https://my.example.com/endpoint?apiKey="local suffix = "&user=username"local url = testSecret:AddPrefix(prefix)url = url:AddSuffix(suffix)print(url) --> https://my.example.com/endpoint?apiKey=Secret(test_secret)&user=username
在您拥有包含秘密的 URL 后,可以使用 HttpService:RequestAsync() 等方法进行标准 HTTP 请求。当然,您也可以忽略这些方法,直接将秘密插入标题中。