기술 자료

지원

Cloud Code

Cloud Code

서비스 및 액세스 토큰 지원

Use Access Tokens and Service Tokens to authenticate requests in Cloud Code scripts.
읽는 시간 3분최근 업데이트: 14시간 전

스크립트에서
context
오브젝트는
accessToken
serviceToken
을 제공합니다.

토큰 유형

출처

데이터 액세스

사용

accessToken
Authentication 서비스 에서 생성인증된 플레이어만
AccessToken
은 Cloud Code 호출을 인증하는 데 사용하는 JWT입니다. 인증된 플레이어의 데이터에 액세스하기 위해 다른 UGS 서비스에 이 토큰을 전달할 수 있습니다.
serviceToken
Cloud Code에서 생성크로스 플레이어 데이터 액세스
ServiceToken
은 다른 UGS 서비스를 호출하고 크로스 플레이어 데이터와 상호 작용하는 데 사용하는 토큰입니다.
다른 UGS 서비스를 호출할 때 이러한 토큰을 사용하여 플레이어나 Cloud Code로 인증할 수 있습니다. 자세한 내용은 인증 페이지를 참고하십시오.

개요

플레이어로 인증할지 신뢰할 수 있는 클라이언트로 인증할지 평가합니다. 스크립트
context
오브젝트는
accessToken
serviceToken
을 제공합니다.
스크립트의 목적이 인증된 플레이어의 데이터에만 액세스하는 것이라면,
accessToken
을 사용하여 스크립트를 호출하는 플레이어로 인증해야 합니다. 그러면 플레이어가 자신의 데이터에만 액세스하고 상호 작용할 수 있습니다.
스크립트의 목적이 크로스 플레이어 데이터에 액세스하는 것이라면,
serviceToken
을 사용하여 Cloud Code로 인증해야 합니다. 그러면 스크립트가 크로스 플레이어 데이터에 액세스하고 상호 작용할 수 있습니다. 그러나 이 방법을 사용하면 악의적인 플레이어가 스크립트를 호출하여 의도하지 않은 부분에서 크로스 플레이어 데이터에 액세스하게 될 수 있습니다. 이를 방지하기 위해 모듈을 액세스 제어 규칙으로 보호해야 합니다.
크로스 플레이어 데이터와 상호 작용하는 방법을 자세히 알아보려면 플레이어 간 데이터 기술 자료를 참고하십시오.

액세스 토큰 지원

액세스 토큰은 Authentication 서비스 에서 생성하는 JWT입니다. 액세스 토큰을 사용하여 플레이어를 인증할 수 있습니다. 인증된 플레이어가 Cloud Code 모듈을 호출하면, 플레이어의 액세스 토큰을
context
오브젝트의
AccessToken
프로퍼티로 모듈에 전달합니다.
Cloud Code JavaScript SDK로 액세스 토큰을 사용할 수 있습니다. 다른 UGS API에서 액세스 토큰을 사용하려면, 인증 헤더에서 토큰을 bearer 토큰으로 전달해야 합니다. 구성된 모든 액세스 제어 규칙은
accessToken
에 영향을 줍니다.

지원되는 서비스

액세스 토큰을 지원하는 서비스를 확인하려면 아래 표를 참고하십시오.

제공자

지원되는 서비스

Cloud Code JavaScript SDKAuthentication 서비스와 함께 온보딩된 모든 Cloud Code JavaScript SDK
UGS 클라이언트 APIAuthentication 서비스와 함께 온보딩된 모든 UGS 서비스
UGS 관리자 API지원되지 않습니다. 대신 서비스 계정 인증을 사용하십시오.

Cloud Code JavaScript SDK로 토큰 사용

Cloud Code JavaScript SDK로
accessToken
을 사용하려면
context
오브젝트에서 토큰을 전달해야 합니다.
아래는 스크립트를 호출하는 플레이어의 재화 잔액을 늘리는 예시로, 재화 ID를 파라미터로 사용합니다.

JavaScript

const { CurrenciesApi } = require("@unity-services/economy-2.4");module.exports = async ({ params, context, logger }) => { const { projectId, playerId, accessToken } = context; const { currencyId } = params; // Use the accessToken from the context object to authenticate the call as the player const currencies = new CurrenciesApi({accessToken}); try { const result = await currencies.incrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 10 } }); return result.data; } catch (err) { logger.error("Failed to update currency balance", {"error.message": err.message}, {"currencyId" : currencyId}); throw err; }}

UGS 클라이언트 API로 토큰 사용

UGS 클라이언트 API로
accessToken
을 사용하려면 인증 헤더에 토큰을 bearer 토큰으로 전달해야 합니다.
아래는 스크립트를 호출하는 플레이어의 친구 목록을 가져오는 예시입니다.

JavaScript

const axios = require("axios-0.21");module.exports = async ({ params, context, logger }) => { const config = { headers: { 'Content-Type': 'application/json', // Pass the accessToken from the context object as a bearer token Authorization: `Bearer ${context.accessToken}` } }; try { const friendsGetUrl = `https://social.services.api.unity.com/v1/relationships?type=FRIEND_REQUEST` var res = await axios.get(friendsGetUrl, config); return res.data; } catch (err) { logger.error("Failed to retrieve Friends", {"error.message": err.message}); throw err; }};

서비스 토큰 지원

서비스 토큰은 Cloud Code가 생성하는 JWT입니다. 서비스 토큰을 사용하여 Cloud Code로 서비스를 인증할 수 있습니다. 이 토큰은 토큰 교환 프로세스를 거친 서비스 계정 토큰입니다. Cloud Code JavaScript SDK로 서비스 토큰을 사용할 수 있습니다. 다른 API로 서비스 토큰을 사용하려면 인증 헤더에서 토큰을 bearer 토큰으로 전달해야 합니다. 자세한 내용은 Authentication 기술 자료를 참고하십시오.

지원되는 서비스

서비스 토큰을 지원하는 서비스 목록은 아래 표를 참고하십시오.

제공자

지원되는 서비스

Cloud Code JavaScript SDK
UGS 클라이언트 API
UGS 관리자 API지원되지 않습니다. 대신 서비스 계정 인증을 사용하십시오.
자세한 내용은 Cloud Code 서비스 SDK 기술 자료를 참고하십시오.

Cloud Code JavaScript SDK로 토큰 사용

Cloud Code JavaScript SDK로
serviceToken
을 사용하려면
context
오브젝트에서 토큰을 전달해야 합니다.
아래는 플레이어 ID와 재화 ID를 파라미터로 사용하여 해당 플레이어의 재화 잔액을 늘리는 예시입니다.

JavaScript

const { CurrenciesApi } = require("@unity-services/economy-2.4");module.exports = async ({ params, context, logger }) => { const { projectId } = context; const { playerId, currencyId } = params; // By default, the Cloud Code JavaScript SDKs use the serviceToken from the context object const currencies = new CurrenciesApi(context); try { const result = await currencies.incrementPlayerCurrencyBalance({ projectId, playerId, currencyId, currencyModifyBalanceRequest: { amount: 10 } }); return result.data; } catch (err) { logger.error("Failed to update currency balance", {"error.message": err.message}, {"currencyId" : currencyId}); throw err; }}

UGS 클라이언트 API로 토큰 사용

UGS 클라이언트 API로
serviceToken
을 사용하려면 인증 헤더에 토큰을 bearer 토큰으로 전달해야 합니다.
예를 들어 Cloud Save API를 호출하면,
serviceToken
을 사용하여 인증하고 크로스 플레이어 데이터와 상호 작용할 수 있습니다. 아래는 플레이어 ID를 함수 파라미터로 사용하여 새로운 값을 기록하고 해당 플레이어에 대해 저장된 모든 데이터를 반환하는 예시입니다.

JavaScript

const axios = require("axios-0.21");module.exports = async ({ params, context, logger }) => { const config = { headers: { 'Content-Type': 'application/json', // Authenticate as Cloud Code using the serviceToken from the context object Authorization: `Bearer ${context.serviceToken}` } }; let result; try { const cloudSaveUrl = `https://cloud-save.services.api.unity.com/v1/data/projects/${context.projectId}/players/${params.playerId}/items` const payload = { key : "test", value: "test" }; await axios.post(cloudSaveUrl, payload, config); result = await axios.get(cloudSaveUrl, config); return result.data; } catch (err) { logger.error("Failed to call out to Cloud Save", {"error.message": err.message}); throw err; }};