ドキュメント

サポート

Cloud Code

サービスとアクセストークンのサポート

Use Access Tokens and Service Tokens to authenticate requests in Cloud Code scripts.
読み終わるまでの所要時間 4 分最終更新 23日前

スクリプトでは、
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 でアクセストークンを使用するには、Authentication ヘッダーでトークンを Bearer トークンとして渡します。 設定した アクセス制御 ルールは
accessToken
に影響します。

サポートされているサービス

どのサービスがアクセストークンをサポートするかを確認するには、以下の表を参照してください。

プロバイダー

サポートされているサービス

Cloud Code JavaScript SDKAuthentication サービスにオンボードされるすべての Cloud Code JavaScript SDK
UGS Client APIAuthentication サービスにオンボードされるすべての UGS サービス。
UGS Admin 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 Client API でのトークンの使用

UGS Client API で
accessToken
を使用するには、Authentication ヘッダーでトークンを 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 で使用するには、Authentication ヘッダーで Bearer トークンとして渡します。 詳細については、認証 のドキュメントを参照してください。

サポートされているサービス

サービストークンをサポートするサービスのリストについては、以下の表を参照してください。

プロバイダー

サポートされているサービス

Cloud Code JavaScript SDK
UGS Client API
UGS Admin APIサポートされていません。かわりに サービスアカウント認証 を使用します。
詳細については、Cloud Code Services 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 Client API でのトークンの使用

UGS Client API で
serviceToken
を使用するには、Authentication ヘッダーでトークンを 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; }};