サービスとアクセストークンのサポート
Use Access Tokens and Service Tokens to authenticate requests in Cloud Code scripts.
読み終わるまでの所要時間 4 分最終更新 23日前
スクリプトでは、
contextaccessTokenserviceTokenトークンタイプ | 発生元 | データアクセス | 使用方法 |
|---|---|---|---|
| Authentication サービス によって生成されます。 | 認証されたプレイヤーのみ。 | |
| Cloud Code によって生成されます。 | クロスプレイヤーデータアクセス。 | |
概要
プレイヤーと信頼されているクライアントのどちらとして認証するかを評価します。 スクリプトのcontextaccessTokenserviceTokenaccessTokenserviceTokenアクセストークンのサポート
アクセストークンは、Authentication サービス によって生成される JWT です。アクセストークンを使用して、プレイヤーを認証できます。 認証されたプレイヤーが Cloud Code モジュールを呼び出す場合、アクセストークンをcontextAccessTokenaccessTokenサポートされているサービス
どのサービスがアクセストークンをサポートするかを確認するには、以下の表を参照してください。プロバイダー | サポートされているサービス |
|---|---|
| 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 で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 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 Client API でのトークンの使用
UGS Client 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; }};