Roblox는 각 게임에 대해 비밀 저장소를 제공합니다. 비밀은 API 키, 비밀번호 및 액세스 토큰과 같은 민감한 정보로, 외부 서비스에 인증하기 위해 사용됩니다. 예를 들어, 제3자 분석 또는 음악 서비스에 연결하려는 경우, 인증을 위해 API 키를 사용해야 할 가능성이 높습니다.
API 키를 스크립트에 복사하여 붙여넣거나 데이터 저장소에 추가할 수 있지만, 이러한 방법은 불필요한 보안 위험을 초래합니다. 더 나은 솔루션은 비밀 저장소를 사용하고 소량의 안전한 방법을 통해 키에 접근하는 것입니다.
비밀 추가
비밀을 보거나 생성하거나 편집하려면 게임 소유자 또는 그룹 소유자여야 합니다. 게임당 최대 500개의 비밀을 가질 수 있습니다.
Creator Dashboard로 이동합니다.
당신의 게임을 선택한 다음 Secrets ⟩ Create Secret을 선택합니다.
이름, 비밀, 해당 도메인을 입력합니다.
- 이름은 비밀의 고유 식별자로 작용하므로, 설명적인 이름을 권장합니다.
- 비밀은 최대 1,024자까지 가능합니다. API 키와 액세스 토큰은 서비스 제공자로부터 가져와야 하지만, 비밀이 비밀번호인 경우 스스로 생성했을 가능성이 높습니다.
- 도메인에 대한 제한된 와일드카드 구문을 사용할 수 있으며, *는 모든 도메인(추천하지 않음) 또는 *.example.com은 example.com의 모든 하위 도메인에 해당합니다. 특정 도메인이 더욱 좋습니다. 예를 들어 my.example.com과 같이 설정할 수 있습니다.
로컬 비밀
보안상의 이유로 각 게임의 비밀 저장소는 라이브 서버 또는 협업 테스트 환경에서만 사용할 수 있습니다. 로컬 플레이테스트 중 비밀에 접근하려고 하면 Can't find secret with given key 오류가 발생합니다. 클라이언트 스크립트에서 비밀에 접근하려고 해도 동일한 오류가 발생합니다.
로컬 테스트를 위한 비밀을 지정하려면 Studio로 이동한 후 File ⟩ Experience Settings ⟩ Security로 이동합니다. Secrets 섹션에서 새로운 비밀을 생성하거나 기존 비밀을 편집하거나 삭제할 수 있습니다.


비밀 사용
게임 내에서 비밀을 사용하기 전에 Studio의 File ⟩ Experience Settings 창의 Security 섹션에서 Allow HTTP Requests를 활성화해야 합니다. 그런 다음 서버 스크립트 내에서 HttpService:GetSecret()을 호출합니다:
local HttpService = game:GetService("HttpService")local testSecret = HttpService:GetSecret("test_secret")
비밀 저장소를 사용하는 매력 중 하나는 비밀을 실수로 출력할 수 없다는 점입니다. 비밀 자체 대신, 다음 코드는 비밀을 생성할 때 제공한 이름을 출력합니다:
print(testSecret) --> Secret(test_secret)
문자열을 직접 조작할 수는 없습니다. 대신, Secret 데이터 유형은 URL을 형성하는 데 도움을 주기 위해 비밀에 접두사와 접미사를 추가할 수 있게 해줍니다:
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 요청을 만들 수 있습니다. 물론 이러한 방법을 무시하고 비밀을 헤더에 직접 삽입할 수도 있습니다.