自定义 ID 登录
最低 SDK 版本:3.1.0
本文指导您完成以下场景,以使用自定义令牌为游戏中玩家设置身份验证
- 设置自定义 ID 提供商登录。
- 登录返回用户或创建新用户。
要为游戏中玩家提供自定义 ID 登录选项,请设置您的应用以启用使用自定义 ID 提供商登录。
设置自定义 ID 登录
将**自定义 ID** 作为 Unity 的 ID 提供商添加
- 在 Unity 编辑器菜单中,转到**编辑**>**项目设置…**,然后从导航菜单中选择**服务**>**身份验证**。
- 将**ID 提供商**设置为**自定义**,然后选择**添加**。
创建服务帐户 并添加项目角色 **玩家身份验证令牌颁发者**
登录返回用户或创建新用户
要使用自定义 ID 身份验证登录玩家,您必须向您自己的游戏服务器发出请求,以请求 Unity 身份验证服务**访问令牌**和**会话令牌**。
在您的游戏服务器上
- 调用令牌交换 API 以检索无状态令牌。
- 调用使用自定义 ID 登录 API。
使用从您的游戏服务器检索的**访问令牌**和**会话令牌**来调用
ProcessAuthenticationTokens
API。
处理身份验证令牌
ProcessAuthenticationTokens
用于处理 Unity 身份验证服务访问令牌,并使它们可供集成到游戏中的其他 UGS SDK 使用,这些 SDK 需要玩家进行身份验证。由于访问令牌会过期,您必须手动刷新访问令牌并使用新的访问令牌调用ProcessAuthenticationTokens
。您可以使用访问令牌和会话令牌同时调用ProcessAuthenticationTokens
。Unity 身份验证 SDK 在访问令牌过期之前刷新访问令牌,保持玩家的会话处于活动状态,并启用登录缓存的玩家。
using Unity.Services.Authentication;
void SignUserWithCustomTokenWithAutoRefresh()
{
try
{
// Check if a cached player already exists by checking if the session token exists
if (AuthenticationService.Instance.SessionTokenExists)
{
// This call will sign in the cached player.
await AuthenticationService.Instance.SignInAnonymouslyAsync();
Debug.Log("Cached user sign in succeeded!");
}
else
{
var userTokens = // Fetch the user tokens using your method calls
AuthenticationService.Instance.ProcessAuthenticationTokens(userTokens.AccessToken, userTokens.SessionToken)
}
// Shows how to get the playerID
Debug.Log($"PlayerID: {AuthenticationService.Instance.PlayerId}");
}
catch (AuthenticationException ex)
{
// Compare error code to AuthenticationErrorCodes
// Notify the player with the proper error message
Debug.LogException(ex);
}
catch (RequestFailedException ex)
{
// Compare error code to CommonErrorCodes
// Notify the player with the proper error message
Debug.LogException(ex);
}
catch (Exception ex) {
// Handle exceptions from your method call
Debug.LogException(ex);
}
}
请注意,示例代码只是一个方法,而不是一个类。