# 身份验证方法

> Learn the differences between anonymous and external authentication providers to choose the best approach for your game.

Unity Authentication 支持匿名认证玩家，也支持通过外部身份提供商（包括 Google Play Games、Facebook、Apple、Steam、OpenID Connect 和特定游戏主机登录）认证玩家。

## 匿名身份验证##anonymous-authentication

匿名身份验证与访客登录类似，不需要玩家输入凭据或创建玩家配置文件。要在应用程序中实现匿名身份验证，请对 Unity Authentication 进行 API 调用。该服务会创建 PlayerID 和相应的会话令牌。如需了解更多信息，请参阅[如何使用匿名登录](./use-anon-sign-in.md)。

该方法不需要玩家输入，因而能最大限度减少玩家在游戏中的阻碍。然而，由于匿名玩家无法在其他设备重新进行身份验证，故而无法跨设备同步。若要在其他设备上使用同一个玩家配置文件登录同一款游戏，玩家必须使用外部身份提供商。

> **Note:**
>
> 注意：匿名身份验证是指无需收集或使用玩家个人身份信息，对玩家进行身份验证的过程。

## 特定平台/第三方身份验证##external-authentication

特定平台身份验证（也称为第三方身份验证或外部身份验证）使用外部身份提供商。这表示，您必须创建身份提供商配置，Unity Authentication 才可以验证玩家，从而在多个设备中对同一玩家进行身份验证。

通常，玩家使用电子邮件地址或用户名和密码通过外部身份提供商登录时，此过程便已开始。玩家登录时，会向 Unity Authentication 发送令牌进行验证。如果外部身份提供商成功验证令牌，则该令牌将与 PlayerID 关联。

> **Warning:**
>
> **注意**：以下内容涉及非 Unity 开发、拥有或运营的产品或服务（均为“第三方产品”）。下述信息可能不是最新的，也可能不够完整，仅供参考之用，为您带来方便。您对任何第三方产品的访问和使用仅受该第三方产品的条款和条件约束。Unity 对此类第三方产品不做任何明示或暗示的陈述或担保，对于因使用此类产品而导致的任何实际或指控的损害或损失（包括因任何第三方产品提供商的任何内容、广告、产品或其他材料而导致的损害或损失），Unity 皆不承担任何直接或间接责任。

Unity Authentication 通过以下方式支持这些外部身份提供商：

* **Unity Player Accounts**：玩家使用 Unity Player 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的设备上将保持一致。您必须使用游戏的 Unity Player Account 客户端 ID 为 Unity Authentication 配置身份提供商，从而将 Unity 玩家帐户作为 ID 提供商。请参阅 [Unity Player Accounts 登录](./unity-player-accounts.md)。
* **Google**：玩家使用 Google 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同 Android 设备上将保持一致。您必须使用游戏的 OAuth 客户端 ID 为 Unity Authentication 配置身份提供商，从而将 Google 作为外部 ID 提供商。请参阅 [Google 登录](./platform-signin/google.md)。
* **Google Play Games**：玩家使用 Google Play Games 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同 Android 设备上将保持一致。您必须使用游戏的 OAuth 客户端 ID 为 Unity Authentication 配置身份提供商，从而将 Google 作为外部 ID 提供商。请参阅 [Google Play Games 登录](./platform-signin/google-play-games.md)。
* **Facebook**：玩家使用 Facebook 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的设备上将保持一致。您必须使用游戏的 Facebook 应用程序 ID 和 Facebook 应用程序密钥为 Unity Authentication 配置身份提供商，从而将 Facebook 作为外部 ID 提供商。Unity Authentication 仅接受使用 Facebook 的 USER 令牌类型进行身份验证。请参阅 [Facebook 登录](./platform-signin/facebook.md)。
* **Apple**：玩家使用 Apple 帐户凭据在 iOS 设备上进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的 Apple 设备上将保持一致。您必须使用游戏的 OAuth 客户端 ID 为 Unity Authentication 配置身份提供商，从而将 Apple 作为外部 ID 提供商。请参阅 [Apple 登录](./platform-signin/apple.md)。
* **Steam**：玩家使用 Steam 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的设备上将保持一致。您必须使用游戏的 Steam 应用程序 ID 和 Steam API 密钥为 Unity Authentication 配置身份提供商，从而将 Steam 作为外部 ID 提供商。请参阅 [Steam 登录](./platform-signin/steam.md)。
* **Oculus (Meta Quest)**：玩家使用 Oculus 帐户凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的设备上将保持一致。您必须使用游戏的 Oculus 应用程序 ID 和客户端密码为 Unity Authentication 配置身份提供商，从而将 Oculus 作为外部 ID 提供商。请参阅 [Oculus 登录](./platform-signin/oculus.md)。
* **Apple Game Center**：玩家使用 Apple Game Center 凭据进行身份验证。如果玩家使用相同的帐户进行身份验证，其游戏进程（和 Player ID）在不同的设备上将保持一致。您必须使用游戏的 Apple 捆绑包 ID 为 Unity Authentication 配置身份提供商，从而将 Apple Game Center 作为外部 ID 提供商。请参阅 [Apple Game Center 登录](./platform-signin/apple-game-center.md)。

## 自定义身份验证##code-link

您可以将自己的自定义身份验证解决方案与 Unity Authentication 进行集成。为此，您必须为自定义身份验证系统创建身份提供商配置，这样 Unity Authentication 才可以验证玩家。因此，可以实现在多个设备中对同一玩家进行身份验证。

Unity Authentication 支持通过使用 [OpenID Connect](./openid-connect.md) 协议的自定义 ID 提供商对玩家进行身份验证，并支持使用自有的游戏服务器进行自定义 ID 身份验证（请参阅[自定义 ID 登录](./platform-signin/custom-id.md)）。

游戏启动时，Unity Authentication 会检查是否存在有效的持续会话。如果没有，那么游戏开发者可以为他们的玩家提供登录选项。选项取决于运行游戏的平台。在对玩家进行身份验证后，游戏会指示是否支持将匿名玩家与外部 ID 提供商相关联，或者取消匿名玩家与外部 ID 提供商的关联。

> **Note:**
>
> **注意**：Unity 支持 XBOX® 和 PlayStation® Network (PSN) 的特定游戏主机登录。如需了解更多详细信息，请通过 Unity [支持门户](https://support.unity.com/hc/en-us/requests/new?ticket_form_id=360001936712\&developerId=3154893\&organizationId=1374782261124\&previousPathname=%2Forganizations%2F1374782261124%2Fprojects%2F850b2c1d-6076-4d4a-be32-3f77578a6b0e%2Fplayer-authentication%2Fabout\&projectId=850b2c1d-6076-4d4a-be32-3f77578a6b0e\&serviceName=player-authentication)联系我们。
