# 蓝图集成

> Learn how to implement authentication using Unreal Engine Blueprints.

### 将 Authentication SDK 添加为依赖项##add-the-authentication-sdk-as-a-dependency

在继续进行以下蓝图演示之前，请确保已成功安装了 Authentication SDK 插件，并且可以在蓝图的事件图中或 **Unity Gaming Services（Unity 游戏服务）**> **Authentication** 下的函数中查看与 Authentication 相关的函数。


**此蓝图的所有操作。:**
![此蓝图的所有操作。](/api/media?file=/authentication-unreal/media/images/unreal-auth-blueprint-actions.png)

#### Sign In Anonymously##sign-in-anonymously

使用 `Sign In Anonymously ` 进行[匿名身份验证](/authentication/use-anon-sign-in.md)。这是一种无需任何用户信息即可进行身份验证的快速方法，并且不需要与外部提供商进行交互。如果成功，这将使用从 Unity Authentication 服务器返回的凭据填充当前玩家配置文件。

`Sign In Anonymously` 采用 `FAuthenticationSignInOptions` 结构作为参数来更改登录的执行方式。有关这些参数的更多信息可以在官方 [Unity API 服务文档页面](https://services.docs.unity.com/player-auth/v1/index.html)上找到。

需要使用自定义事件来接收[身份验证响应](./sdk-api/authentication/models/authentication-response.md)作为输出引脚以便处理来自 SDK 的响应。为了隔离响应变量，请右键单击响应正文输出引脚，然后选择 **Split Pin（拆分引脚）**。


**Sign in anonymously:**
![Sign in anonymously](/api/media?file=/authentication-unreal/media/images/unreal-auth-sign-in-anonymously.png)

### Get User Info##get-user-info

使用 `Get User Info` 获取当前经过身份验证的用户的相关信息。此信息包括用户 ID、身份验证时间戳以及与会话相关的任何外部身份提供商。

需要使用自定义事件来接收[身份验证用户响应](./sdk-api/authentication/models/authentication-user-response.md)（表示来自 Authentication SDK 的用户响应）作为输出引脚以便处理来自 SDK 的响应。为了隔离响应变量，请右键单击响应正文输出引脚，然后选择 **Split Pin（拆分引脚）**。


**Get user info:**
![Get user info](/api/media?file=/authentication-unreal/media/images/unreal-auth-user-info.png)

### Delete User##delete-user

使用 `Delete User` 删除与当前经过身份验证的玩家相关的所有信息。此函数还可注销玩家并删除与玩家相关的所有玩家偏好设置和配置文件。

需要使用自定义事件来接收 `Boolean`（表示删除操作是否成功）作为输出引脚以便处理来自 SDK 的响应。


**Delete user:**
![Delete user](/api/media?file=/authentication-unreal/media/images/unreal-auth-delete-user.png)

### Register State Changed Callback##register-state-changed-callback

使用 `Register State Changed Callback` 分配一个在[子系统状态](./authentication-lifecycle.md)改变时调用的回调函数。例如，当玩家成功通过身份验证且子系统状态变为 `Authorized` 时，分配的函数将执行。

需要使用自定义事件来接收[身份验证状态更改响应](./sdk-api/authentication/models/authentication-state-changed-response.md)（表示来自 Authentication SDK 的响应）作为输出引脚以便处理来自 SDK 的响应。为了隔离响应变量，请右键单击响应正文输出引脚，然后选择 **Split Pin（拆分引脚）**。


**Register state changed callback:**
![Register state changed callback](/api/media?file=/authentication-unreal/media/images/unreal-auth-state-change-callback.png)

### Sign Out##sign-out

使用 `Sign Out` 注销当前经过身份验证的玩家配置文件。这将移除当前玩家配置文件并切换到默认配置文件。此函数还有一个可选参数，用于移除任何先前存储的与该玩家相关的凭据。

> **Note:**
>
> **注意**：如果在使用默认配置文件时使用 `Sign Out`，则会清除配置文件信息，但配置文件保持不变。

此函数返回一个 `Boolean` 以表示操作是否成功。


**alt\_text:**
![alt\_text](/api/media?file=/authentication-unreal/media/images/unreal-auth-sign-out.png)

### Switch Profile##switch-profile

使用 `Switch Profile` 切换或创建玩家配置文件。

> **Note:**
>
> **注意**：仅在已注销的状态下才可以调用 `Switch Profile`。如果在经过身份验证时调用配置文件切换，则会记录一条警告，并且不会发生任何改变。


**Switch profile:**
![Switch profile](/api/media?file=/authentication-unreal/media/images/unreal-auth-switch-profile.png)

### Profile Exists##profile-exists

使用 `Profile Exists` 检查当前会话中是否存在给定的配置文件。

> **Note:**
>
> **注意**：`Profile Exists` 无法检测到在先前会话中存在但在当前会话中尚未重新创建的配置文件。

此函数返回一个 `Boolean` 以表示给定的配置文件名称是否存在于当前玩家配置文件列表中。


**Profile exists:**
![Profile exists](/api/media?file=/authentication-unreal/media/images/unreal-auth-profile-exists.png)

### Get Current Profile Name##get-current-profile-name

使用 `Get Current Profile Name` 获取当前玩家配置文件的名称。

此函数返回一个 `String` 以表示 Authentication 子系统正在使用的当前玩家配置文件的名称。


**Get current profile name:**
![Get current profile name](/api/media?file=/authentication-unreal/media/images/unreal-auth-current-name.png)

### Get Profile Names##get-profile-names

使用 `Get Current Profile Names` 获取当前会话中使用的所有玩家配置文件名称的列表。

此函数返回一个 `String Array` 以表示 Authentication 子系统正在使用的玩家配置文件的所有名称。


**Get profile names:**
![Get profile names](/api/media?file=/authentication-unreal/media/images/unreal-auth-profile-names.png)

### Register Profile Changed Callback##register-profile-changed-callback

使用 `Register Profile Changed Callback` 分配一个在玩家配置文件发生变化时调用的回调函数。例如，当 [Switch Profile](./blueprint-integration.md#switch-profile) 成功执行时，将执行指定的函数。

需要使用自定义事件来接收[身份验证玩家配置文件更改响应](./sdk-api/authentication/models/authentication-player-profile-changed-response.md)作为输出引脚以便处理来自 SDK 的响应。为了隔离响应变量，请右键单击响应正文输出引脚，然后选择 **Split Pin（拆分引脚）**。


**Register profile changed callback:**
![Register profile changed callback](/api/media?file=/authentication-unreal/media/images/unreal-auth-register-profile.png)

### Register Profile Deleted Callback##register-profile-deleted-callback

使用 `Register Profile Changed Callback` 函数分配一个从当前会话中移除玩家配置文件时调用的回调函数。例如，当 [Sign Out](./blueprint-integration.md#sign-out) 成功执行时，将执行指定的函数。

需要使用自定义事件来接收[身份验证玩家配置文件删除响应](./sdk-api/authentication/models/authentication-player-profile-deleted-response.md)作为输出引脚以便处理来自 SDK 的响应。为了隔离响应变量，请右键单击响应正文输出引脚，然后选择 **Split Pin（拆分引脚）**。


**Register profile deleted callback:**
![Register profile deleted callback](/api/media?file=/authentication-unreal/media/images/unreal-auth-profile-deleted-callback.png)

### Is Signed In##is-signed-in

使用 `Is Signed In` 检查当前玩家配置文件是否已登录。“Signed-In（已登录）”状态的定义为 Authorized（已授权）或 Expired（已到期）。

此函数返回一个 `Boolean` 以表示当前玩家配置文件是否已登录。


**Is signed in:**
![Is signed in](/api/media?file=/authentication-unreal/media/images/unreal-auth-signed-in.png)

### Is Anonymous##is-anonymous

使用 `Is Anonymous` 检查当前玩家配置文件是否匿名登录。成功执行 `Sign In Anonymously` 后，这应该返回 true。

此函数返回一个 `Boolean` 以表示当前玩家配置文件是否匿名登录。如果上次登录是匿名的，即使会话已到期，此函数也会返回 true。


**Is anonymous:**
![Is anonymous](/api/media?file=/authentication-unreal/media/images/unreal-auth-is-anonymous.png)

### Is Authorized##is-authorized

使用 `Is Authorized` 检查当前玩家配置文件是否已登录并且当前已获得授权。

此函数返回一个 `Boolean` 以表示当前玩家配置文件是否已登录并成功授权。在到期时间未过的情况下执行任何登录函数后都应返回 true。


**Is authorized:**
![Is authorized](/api/media?file=/authentication-unreal/media/images/unreal-auth-is-authorized.png)

### Is Expired##is-expired

使用 `Is Expired` 检查当前[玩家配置文件](./player-profiles.md)的会话是否已到期。

此函数返回一个 `Boolean` 以表示当前玩家配置文件的会话是否已超过从其初始[身份验证响应](./sdk-api/authentication/models/authentication-response.md)返回的有效期。


**Is expired:**
![Is expired](/api/media?file=/authentication-unreal/media/images/unreal-auth-is-expired.png)

### Session Token Exists##session-token-exists

使用 `Session Token Exists` 检查当前玩家配置文件的玩家偏好设置中是否存在[会话令牌](./sdk-api/authentication/models/authentication-response.md#sessiontoken)。

此函数返回一个 `Boolean` 以表示是否存在会话令牌。


**Session tokene exists:**
![Session tokene exists](/api/media?file=/authentication-unreal/media/images/unreal-auth-token-exists.png)

### Get Unity Project Id##get-unity-project-id

使用 `Get Unity Project Id` 获取与当前身份验证会话关联的 Unity Project ID。

此函数返回一个 `Guid` 以表示当前正在使用的 Project ID。


**Get Unity project ID:**
![Get Unity project ID](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-unity-project.png)

### Get Unity Environment Name##get-unity-environment-name

使用 `Get Unity Environment Name` 获取与当前身份验证会话关联的 Unity 环境名称。

此函数返回一个 `String` 以表示当前正在使用的环境。


**Get Unity Environment Name:**
![Get Unity Environment Name](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-env-name.png)

### Get Access Token##get-access-token

使用 `Get Access Token` 获取当前会话的[访问令牌](./sdk-api/authentication/models/authentication-response.md)。如果不存在，此函数返回一个空字符串。


**Get access token:**
![Get access token](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-access-token.png)

### Get Session Token##get-session-token

使用 `Get Session Token` 获取当前会话的[会话令牌](./sdk-api/authentication/models/authentication-response.md)。如果不存在，此函数返回一个空字符串。


**Get session token:**
![Get session token](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-session-token.png)

### Get User Id##get-user-id

使用 `Get User Id` 函数获取当前会话的[用户 ID](./sdk-api/authentication/models/authentication-response.md#userid)。

> **Note:**
>
> **注意**：这与[玩家配置文件名称](./blueprint-integration.md#get-current-profile-name)不同。用户 ID 是从 Unity Authentication 系统返回的唯一用户标识符。

此函数返回一个 `String` 以表示当前玩家配置文件的用户 ID。如果不存在，此函数返回一个空字符串。


**Get user ID:**
![Get user ID](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-user-id.png)

### Get State##get-state

使用 `Get State` 函数获取身份验证会话的当前[状态](./sdk-api/authentication/authentication-states.md)。

此函数返回一个 `Enum` 以表示子系统的状态。


**Get state:**
![Get state](/api/media?file=/authentication-unreal/media/images/unreal-auth-get-state.png)

### Set Unity Project Id##set-unity-project-id

使用 `Set Unity Project Id` 设置当前身份验证会话的 [Unity Project ID](./get-started.md#link-your-project)。此函数接受 `Guid`。

> **Note:**
>
> **注意**：这将覆盖在项目设置中配置的 Unity Project ID。


**Set Unity project ID:**
![Set Unity project ID](/api/media?file=/authentication-unreal/media/images/unreal-auth-unity-project-id.png)

### Set Unity Environment Name##set-unity-environment-name

使用 `Set Unity Environment Name` 设置当前身份验证会话的 [Unity 环境名称](./get-started.md#link-your-project)。此函数接受 `String`。

> **Note:**
>
> **注意**：这将覆盖在项目设置中配置的 Unity 环境名称。


**Set Unity Environment Name:**
![Set Unity Environment Name](/api/media?file=/authentication-unreal/media/images/unreal-auth-set-env-name.png)
