> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 登录基础和最佳实践

> 了解 PlayFab 玩家登录选项、匿名与可恢复登录机制以及选择身份验证方法的最佳实践。

## 平台特定的身份验证教程

虽然所有平台特定的身份验证教程都演示了使用 [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid) 登录，但这种登录在已发布游戏中的用途仅限于将 PlayFab 账户与预先存在的数据库或其他后端系统配对。

否则，已发布的 title 使用自定义 ID 作为主要登录方式的情况很少，因为在大多数情况下，你希望捕获玩家平台上的额外信息。

### 为什么我们首先演示这个

坦率地说——因为它是最简单的。自定义 ID 可以是任何东西，这使得调用你的第一个 API 更容易。一旦你认真开发和发布你的 title，你可能会切换到另一种登录机制。

### 最佳实践

除非你*确切*知道为什么要在你发布的 title 中使用 `LoginWithCustomId`，否则你应该在启动之前迁移到另一种登录机制。

## 匿名登录机制

匿名登录机制使用起来最简单。它们需要玩家的*零*输入，因此对首次用户体验没有任何摩擦——结果是 PlayFab 中每个玩家都有一个唯一账户。*这是最常见的登录机制*。

这些登录包括：

* [LoginWithIOSDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)
* [LoginWithAndroidDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)
* [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)
* [LoginWithNintendoSwitchDeviceId](xref:titleid.playfabapi.com.client.authentication.loginwithnintendoswitchdeviceid)

由于它们是匿名的，这些方法可以唯一标识设备，*但不包含关于玩家的任何可恢复信息*。如果玩家丢失或损坏其设备，账户就会丢失，并且可能难以恢复。在大多数情况下，账户被孤立且无法检索。

那为什么要使用它？因为它是玩家进入门槛最低的方式，不需要交互。它让玩家以最小的努力试玩你的游戏，同时创建一个他们可以回访以延续体验的账户（只要他们拥有该设备）。

### 最佳实践

你的游戏应使用*匿名*登录来创建新账户并将新设备关联到现有账户。我们推荐这样做，因为有些玩家可能会放弃需要电子邮件或可识别信息的游戏。

但是，一旦匿名登录完成，你应该提供添加*可恢复*登录凭证的选项，并提供有关好处的一些解释。

特别是，你应确保付费客户被引导到*可恢复*的登录系统，以防止他们的账户丢失。永远丢失一个免费账户令人失望……

永远丢失一个付费账户会影响收入。

### iOS 设备

对于 iOS 设备，如果玩家卸载你的游戏然后重新安装，玩家 ID 会发生变化。在 iOS 上确保获得一致 ID 的一种方法是将玩家的设备 ID 保存到 iTunes KeyChain，以便你可以在游戏启动时从那里读取它，并用它来登录。

你必须确定如何为任何其他设备或平台生成唯一的自定义 ID。自定义 ID 是其他平台或设备的有效替代方案，但你必须小心地生成自定义 ID。如果它们太简单，你就有黑客盗取他人账户的风险。

### Android 设备

有关最新的最佳实践，请参阅 [Google 关于用户数据 ID 的指南](https://developer.android.com/training/articles/user-data-ids)。

<Note>
  绑定可恢复登录每个设备只需*一次*。绑定后，游戏可以继续使用匿名登录，没有任何缺点。请参阅下一节。
</Note>

匿名登录对玩家来说很方便，但它*不是*必需的。你的游戏可以完全依赖可恢复的登录机制。但是，如果你的玩家*不必*每次登录都输入密码，他们会更快乐。

## 可恢复的登录机制

*可恢复*登录机制需要玩家的一些身份信息。如上所述，它可以与匿名登录配对，以获得最佳玩家体验。

### 纯 PlayFab 选项

最简单的选项是：

* [LoginWithPlayFab](xref:titleid.playfabapi.com.client.authentication.loginwithplayfab)
* [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress)

如果使用，电子邮件或用户名加密码将由 PlayFab 直接进行身份验证。账户可以通过电子邮件或用户名恢复，*即使*用户忘记了密码。登录一般是安全的（你可以在你的游戏中实现自己的密码强度检查以改进此项）。

### 第三方 API 选项

这些需要对另一个服务的单独 API 调用，但不需要额外的 SDK 安装：

* [LoginWithKongregate](xref:titleid.playfabapi.com.client.authentication.loginwithkongregate)
* [LoginWithSteam](xref:titleid.playfabapi.com.client.authentication.loginwithsteam)
* [LoginWithTwitch](xref:titleid.playfabapi.com.client.authentication.loginwithtwitch)
* [LoginWithGameCenter](xref:titleid.playfabapi.com.client.authentication.loginwithgamecenter)（仅限 iOS，前提是你要求安全身份验证。）

安全身份验证发生在你的用户和第三方服务 API 调用之间。

### 第三方 SDK 选项

这些需要在你的游戏中安装单独的 SDK。安全身份验证发生在第三方 SDK 内。

* [LoginWithFacebook](xref:titleid.playfabapi.com.client.authentication.loginwithfacebook)
* [LoginWithGoogleAccount](xref:titleid.playfabapi.com.client.authentication.loginwithgoogleaccount)

在所有第三方选项中，这些服务会处理登录凭证，你将安全令牌传递给相应的 PlayFab 登录方法。PlayFab 仍不知道这些服务的登录凭证。

### 更多最佳实践

使用适当的匿名登录进行基本登录，并鼓励玩家关联到可恢复登录。你应该选择你熟悉且熟悉的一个或多个可恢复机制。

<Tip>
  账户恢复只需要*一种*可恢复登录，所以不要迫使你的玩家使用所有登录方式。
</Tip>

## 不安全的登录机制

可恢复登录机制的一个好处是，它们比使用自定义 ID 登录更安全，因为它们需要与第三方进行经过验证的身份验证，而不是依赖于用户的自定义 ID 保持为共享秘密。

## 结论

匿名登录很棒，它为用户提供了完全自动化的登录过程。缺点是账户恢复，没有可恢复的登录有时不可能。

以下流程图描述了匿名登录后添加可恢复登录机制。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/identity/player-identity/tutorials/playfab-anonymous-login-and-recoverable-login.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=33569b13f8e303cf4cf96fa2673a975a" alt="PayFab anonymous login and recoverable login mechanism" width="866" height="802" data-path="images/playfab/identity/player-identity/tutorials/playfab-anonymous-login-and-recoverable-login.png" />

### 最佳实践

针对你的设备使用适当的匿名登录，与用于账户恢复的一个或多个选项配对。


## Related topics

- [服务器端匿名登录身份验证](/zh-CN/services/playfab/identity/player-identity/platform-specific-authentication/anonymous-login.md)
- [XBOX Live Title 关联](/zh-CN/services/playfab/identity/player-identity/platform-specific-authentication/xbox-live-add-on.md)
- [使用 Kongregate 和 HTML5 设置 PlayFab 身份验证](/zh-CN/services/playfab/identity/player-identity/platform-specific-authentication/kongregate-html5.md)
- [在 Unity 中使用 Google Play Games 登录进行 PlayFab 身份验证](/zh-CN/services/playfab/identity/player-identity/platform-specific-authentication/google-sign-in-unity.md)
- [使用 Kongregate 和 Unity 设置 PlayFab 身份验证](/zh-CN/services/playfab/identity/player-identity/platform-specific-authentication/kongregate-unity.md)
