서비스 및 액세스 토큰 지원
Use Access Tokens and Service Tokens to authenticate requests in Cloud Code scripts.
읽는 시간 3분최근 업데이트: 14시간 전
스크립트에서
contextaccessTokenserviceToken토큰 유형 | 출처 | 데이터 액세스 | 사용 |
|---|---|---|---|
| Authentication 서비스 에서 생성 | 인증된 플레이어만 | |
| Cloud Code에서 생성 | 크로스 플레이어 데이터 액세스 | |
개요
플레이어로 인증할지 신뢰할 수 있는 클라이언트로 인증할지 평가합니다. 스크립트contextaccessTokenserviceTokenaccessTokenserviceToken액세스 토큰 지원
액세스 토큰은 Authentication 서비스 에서 생성하는 JWT입니다. 액세스 토큰을 사용하여 플레이어를 인증할 수 있습니다. 인증된 플레이어가 Cloud Code 모듈을 호출하면, 플레이어의 액세스 토큰을contextAccessTokenaccessToken지원되는 서비스
액세스 토큰을 지원하는 서비스를 확인하려면 아래 표를 참고하십시오.제공자 | 지원되는 서비스 |
|---|---|
| Cloud Code JavaScript SDK | Authentication 서비스와 함께 온보딩된 모든 Cloud Code JavaScript SDK |
| UGS 클라이언트 API | Authentication 서비스와 함께 온보딩된 모든 UGS 서비스 |
| UGS 관리자 API | 지원되지 않습니다. 대신 서비스 계정 인증을 사용하십시오. |
Cloud Code JavaScript SDK로 토큰 사용
Cloud Code JavaScript SDK로accessTokencontext
아래는 스크립트를 호출하는 플레이어의 재화 잔액을 늘리는 예시로, 재화 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
아래는 스크립트를 호출하는 플레이어의 친구 목록을 가져오는 예시입니다.
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 JavaScript SDK로 토큰 사용
Cloud Code JavaScript SDK로serviceTokencontextJavaScript
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
예를 들어 Cloud Save API를 호출하면,
serviceTokenJavaScript
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; }};