비밀 작업

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

Roblox는 각 경험에 대해 비밀 저장소를 제공합니다.비밀은 외부 서비스와 인증하는 데 사용하는 API 키, 비밀, 액세스 토큰과 같이 민감한 정보입니다.예를 들어, 타사 분석 또는 음악 서비스에 연결하려는 경우, 아마도 API 키를 사용하여 인증해야 합니다.

스크립트에 API 키를 복사하고 붙여넣거나 데이터 상점추가할 수 있지만, 이러한 방법은 불필요한 보안 위험을 수반합니다.더 나은 솔루션은 비밀 저장소를 사용하고 작은 집합의 안전한 메서드를 사용하여 키에 액세스하는 것입니다.

비밀 추가

보기, 생성 또는 편집하려면 경험 소유자 또는 그룹 소유자여야 합니다. 경험당 최대 500개의 비밀을 가질 수 있습니다.

  1. 탐색하여 크리에이터 대시보드로 이동합니다.

  2. 경험을 선택한 다음 비밀 > 비밀 생성 을 선택하십시오.

  3. 이름, 비밀, 적용 가능한 도메인을 제공합니다.

    • 이름은 비밀에 대한 고유 식별자로 작동하므로 설명적인 것을 권장합니다.
    • 비밀은 길이가 최대 1,024자일 수 있습니다.API 키와 액세스 토큰은 서비스 공급자에서 나와야 하지만, 비밀이 비밀번호인 경우 아마 직접 만들었을 것입니다.
    • 제한된 와일드카드 구문을 사용하여 도메인에 대해 * 모든 도메인(권장되지 않음) 또는 *.example.com 모든 하위 도메인에 대해 example.com에서 사용할 수 있습니다.특정 도메인은 더 나은데, 예를 들어 my.example.com 입니다.

로컬 비밀

보안상의 이유로, 각 경험에 대한 비밀 저장소는 라이브 게임 서버나 팀 테스트 환경에만 사용할 수 있습니다.Studio에서 플레이 버튼을 누른 후 로컬 테스트 서버에서 비밀에 액세스하려고 하면 Can't find secret with given key 발생합니다.

로컬 테스트에 대한 비밀을 지정하려면 게임 설정에서 base64 인코딩된 비밀이 있는 유효한 JSON 개체를 추가하십시오.JSON에는 공백이 포함될 수 있지만 단일 줄에 있어야 합니다.

Local secret in the Game Settings window.

예를 들어, 다음은 기본 64비트 인코딩된 문자열 abcdefghijklmnopqrstuvwxyz 이 하위 도메인에 제한되어 있는 것입니다 example.com :


{"secretName": ["YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=", "*.example.com"]}

여러 비밀을 추가하려면 쉼표로 값을 구분합니다:


{"secretName1": ["dGVzdDE=", "*.example.com"],"secretName2": ["dGVzdDI=", "*.example.com"],"secretName3": ["dGVzdDM=", "*.example.com"]}

비밀 사용

경험 내의 비밀을 사용하기 전에, 게임 설정의 HTTP 요청 허용 탭에서 보안Allow HTTP Requests 를 설정해야 합니다.그런 다음 스크립트 내에서 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 요청을 만들 수 있습니다.물론 이러한 메서드를 무시하고 헤더에 직접 비밀을 삽입할 수도 있습니다.