サービスとアクセストークンのサポート
Use Access Tokens and Service Tokens to authenticate requests in Cloud Code scripts.
読み終わるまでの所要時間 4 分最終更新 6ヶ月前
スクリプトでは、 オブジェクトは と を提供します。
contextaccessTokenserviceTokenトークンタイプ | 発生元 | データアクセス | 使用方法 |
|---|---|---|---|
| Authentication サービス によって生成されます。 | 認証されたプレイヤーのみ。 | |
| Cloud Code によって生成されます。 | クロスプレイヤーデータアクセス。 | |
他の UGS サービスを呼び出す場合、これらのトークンではプレイヤーまたは Cloud Code として認証できます。
詳細については、認証 のページを参照してください。
概要
プレイヤーと信頼されているクライアントのどちらとして認証するかを評価します。
スクリプトの オブジェクトは と を提供します。
contextaccessTokenserviceTokenスクリプトの目的が認証されたプレイヤーのデータにアクセスすることだけである場合は、 を使用して、スクリプトを呼び出すプレイヤーとして認証する必要があります。これにより、プレイヤーがアクセスして操作できるのは自分のデータのみであることが保証されます。
accessTokenスクリプトの目的がクロスプレイヤーデータにアクセスすることである場合は、 を使用して Cloud Code として認証する必要があります。これにより、スクリプトがクロスプレイヤーデータにアクセスして操作できることが保証されます。ただし、これにより穴が開けられ、悪意のあるプレイヤーがスクリプトを呼び出したり、意図していないクロスプレイヤーデータにアクセスしたりできるようになります。これを防ぐには、モジュールが アクセス制御 ルールで保護されていることを確認する必要があります。
serviceTokenクロスプレイヤーデータの操作方法の詳細については、クロスプレイヤーデータ のドキュメントを参照してください。
アクセストークンのサポート
アクセストークンは、Authentication サービス によって生成される JWT です。アクセストークンを使用して、プレイヤーを認証できます。
認証されたプレイヤーが Cloud Code モジュールを呼び出す場合、アクセストークンを オブジェクトの プロパティとしてモジュールに渡します。
contextAccessTokenCloud Code JavaScript SDK でアクセストークンを使用できます。他の UGS API でアクセストークンを使用するには、Authentication ヘッダーでトークンを Bearer トークンとして渡します。
設定した アクセス制御 ルールは に影響します。
accessTokenサポートされているサービス
どのサービスがアクセストークンをサポートするかを確認するには、以下の表を参照してください。
プロバイダー | サポートされているサービス |
|---|---|
| Cloud Code JavaScript SDK | Authentication サービスにオンボードされるすべての Cloud Code JavaScript SDK。 |
| UGS Client API | Authentication サービスにオンボードされるすべての UGS サービス。 |
| UGS Admin 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 Client API でのトークンの使用
UGS Client API で を使用するには、Authentication ヘッダーでトークンを Bearer トークンとして渡します。
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 で使用するには、Authentication ヘッダーで Bearer トークンとして渡します。
詳細については、認証 のドキュメントを参照してください。
サポートされているサービス
サービストークンをサポートするサービスのリストについては、以下の表を参照してください。
プロバイダー | サポートされているサービス |
|---|---|
| Cloud Code JavaScript SDK | |
| UGS Client API | |
| UGS Admin API | サポートされていません。かわりに サービスアカウント認証 を使用します。 |
詳細については、Cloud Code Services SDK のドキュメントを参照してください。
Cloud Code JavaScript SDK でのトークンの使用
Cloud Code JavaScript SDK で を使用するには、 オブジェクトからトークンを渡します。
serviceTokencontext以下の例は、プレイヤー 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 で を使用するには、Authentication ヘッダーでトークンを Bearer トークンとして渡します。
serviceToken例えば、Cloud Save API を呼び出す場合は、 を使用してクロスプレイヤーデータを認証し、操作できます。以下の例は、プレイヤー ID を関数パラメーターとして受け取り、新しい値を記録して、そのプレイヤーについて格納されているすべてのデータを返します。
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; }};