Robloxは各ゲームのためにシークレットストアを提供しています。シークレットは、APIキー、パスワード、外部サービスとの認証に使用するアクセストークンなどの機密情報です。たとえば、サードパーティの分析サービスや音楽サービスに接続したい場合、認証のためにAPIキーを使用する必要があります。
APIキーをスクリプトにコピー&ペーストするか、データストアに追加することもできますが、それらの方法は不要なセキュリティリスクを伴います。より良い解決策は、シークレットストアを使用し、一連の安全な方法でキーにアクセスすることです。
シークレットの追加
シークレットを表示、作成、または編集するには、ゲームのオーナーまたはグループのオーナーである必要があります。ゲームごとに最大500のシークレットを持つことができます。
クリエイターダッシュボードに移動します。
ゲームを選択し、次にシークレット ⟩ シークレットの作成を選択します。
名前、シークレット、適用可能なドメインを入力します。
- 名前はシークレットの一意の識別子として機能するため、説明的なものを推奨します。
- シークレットは最大1,024文字の長さになります。APIキーとアクセストークンはサービスプロバイダーから取得する必要がありますが、シークレットがパスワードの場合は、おそらく自分で作成したものです。
- ドメインには、*(すべてのドメインに対しては推奨されません)や*.example.com(example.comのすべてのサブドメインに対して)などの限られたワイルドカード構文を使用できます。特定のドメインの方がさらに良いです。たとえば、my.example.comなどです。
ローカルシークレット
セキュリティ上の理由から、各ゲームのシークレットストアはライブサーバーまたは共同テスト環境でのみ利用可能です。ローカルプレイテスト中にシークレットにアクセスしようとすると、指定されたキーのシークレットが見つかりませんというエラーが発生します。クライアントスクリプトからシークレットにアクセスしようとすると、同様のエラーが発生します。
ローカルテストのためのシークレットを指定するには、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リクエストを行うことができます。もちろん、これらのメソッドを無視してヘッダーにシークレットを直接挿入することもできます。