ゲーム内でのシークレットの管理に加え、Open CloudシークレットストアAPIを使用してシークレットを管理することができます。
APIを使用する前に、secret-store APIシステムでAPIキーを生成するか、universe.secretスコープタイプでOAuth 2.0アプリを設定する必要があります。このページの例ではAPIキーを使用しています。
シークレットの暗号化
Robloxでシークレットを作成または更新する際は、LibSodiumのシールドボックスとゲームの公開鍵を使用してシークレットを暗号化し、結果をbase64エンコードする必要があります。
まず、ゲームの公開鍵を取得します:
curl --location 'https://apis.roblox.com/cloud/v2/universes/{universeId}/secrets/public-key' \--request GET \--header 'x-api-key: <your-secret-here>' \
次に、シールドボックスを作成し、base64エンコードします。以下の例ではPythonとPyNaClを使用しています。(pip install pynaclを実行してローカルにインストールしてください)。
from base64 import b64encodefrom nacl import encoding, publicpublic_key = "Zgj4+V7vSaEZ06rXazKJUIcUnVa95tUNiwXAif/vdHo="secret_content = "my_api_key_content"public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())sealed_box = public.SealedBox(public_key)encrypted = sealed_box.encrypt(secret_content.encode("utf-8"))print(b64encode(encrypted).decode("utf-8"))
その後、出力を使用してシークレットを作成または更新できます。この例では新しいシークレットを作成します:
curl --location 'https://apis.roblox.com/cloud/v2/universes/6930499524/secrets' \--request POST \--header 'Content-Type: application/json' \--header 'x-api-key: <your-secret-here>' \--data '{"id": "mySecret","secret": "fP9scJkcDk492F4c1VHZ5QS8v2qsAg7uI+NVVEw6zC0GBnj7xpi7UrNr++lCfr4wyq3ia9Uuu+Ao8HtIXz2gRxBX","key_id": "1200590785272263122"}'
作成後は、ゲーム内でシークレットを使用するためにシークレットの使用を参照してください。
シークレットの更新
上記のシークレットを更新するには:
curl --location 'https://apis.roblox.com/cloud/v2/universes/6930499524/secrets/mySecret' \--request PATCH \--header 'Content-Type: application/json' \--header 'x-api-key: <your-secret-here>' \--data '{"secret": "2Fczw/PL7woOzHnGHQ65sT0MbzJjEOlfibyKxy374CqzFyEb2QTS8grtNBgG/0sfIvSHEo9JWN+pUr0NTPs0V6lj","key_id": "1200590785272263122"}'
シークレットをクリーンアップする必要がある場合、削除リクエストは次のようになります:
curl --location 'https://apis.roblox.com/cloud/v2/universes/6930499524/secrets/mySecret' \--request DELETE \--header 'Content-Type: application/json' \--header 'x-api-key: <your-secret-here>'