Roblox 提供了一个 Node.js 示例应用,展示如何使用 OAuth 2.0 让用户登录他们的 Roblox 账户并在他们的游戏中广播消息。此应用使用 未使用 PKCE 的授权代码流,因此仅适合机密客户端,如私有服务器。
下载 .zip 文件后,将其解压到自己的文件夹中。
注册应用
设置应用的第一步是 在 Roblox 网站上注册 并将客户端 ID 和密钥保存在安全的地方。然后按照以下设置的标准注册步骤进行操作:
- 在 权限 下,添加 openid、profile 和 universe-messaging-service:publish 范围。
- 在 重定向 URL 下,添加 http://localhost:3000/oauth/callback 来重定向。如果你希望为你的应用使用非默认端口,请在此处指定。
设置环境变量
应用使用环境变量存储客户端 ID 和密钥,而不是将其存储在代码中(不推荐)。添加环境变量的过程因操作系统而异。
在 Windows 上,运行以下 PowerShell 命令:
$env:ROBLOX_CLIENT_ID='your_client_id_here'$env:ROBLOX_CLIENT_SECRET='your_client_secret_here'$env:ROBLOX_PORT=3000 # 可选。默认值为 3000。
在 Mac 和大多数 Linux 发行版上,在终端运行以下命令:
export ROBLOX_CLIENT_ID=your_client_id_hereexport ROBLOX_CLIENT_SECRET=your_client_secret_hereexport ROBLOX_PORT=3000 # 可选。默认值为 3000。
如果在注册应用时在重定向 URL 中指定了非默认端口,请确保添加 ROBLOX_PORT 变量。
安装依赖
该应用有一些依赖项,可以在 package.json 中查看。要安装它们,请运行:
npm ci
运行应用
要启动应用,请运行:
npm start
然后在网页浏览器中导航到 http://localhost:3000(或你的非默认端口)。
该应用会立即重定向你到 Roblox 登录屏幕,此时你可以登录,验证应用请求的权限,并点击 确认并授予访问权限。
Roblox 然后会将你重定向回 localhost,在这里你可以看到应用现在显示了一些最少的用户信息、一个返回你在 Roblox 上的个人资料的链接,以及可以用于在你的游戏中广播消息的字段。
关于该应用
大致来说,index.js 执行以下操作:
- 使用 express 启动一个新的 Web 服务器。
- 检索 Roblox OpenID Connect (OIDC) 配置,其中包括用于授权、用户信息等的端点。有关这些端点的更多信息,请参见 OAuth 2.0 认证。
- 使用 openid-client 和你存储的凭证创建一个新的 Open ID 客户端。此客户端显著简化了正确构造和发送 HTTP 请求到 OAuth 2.0 端点的过程。
- 定义应用的路由,包括登录和注销流程的重定向和 OAuth 2.0 回调。
- 成功登录后,将各种令牌存储为 cookie,以及一些最少的用户信息,并借助 getHomeHtml.js 作为 HTML 显示。