> ## 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 帳戶與既有的資料庫或其他後端系統配對。

除此之外，已發行的遊戲很少使用自訂識別碼作為主要登入方式，因為在大多數情況下，您會想要擷取玩家平台上的其他資訊。

### 為何我們先示範這個

坦白說，因為這是最簡單的。自訂識別碼可以是任何內容，讓您更容易呼叫第一個 API。一旦您認真開始開發和發行遊戲，很可能就會改用其他登入機制。

### 最佳做法

除非您*確切*知道為何要在已發行的遊戲中使用 `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 裝置，如果玩家解除安裝您的遊戲後再重新安裝，玩家識別碼就會變更。確保在 iOS 上擁有一致識別碼的一種方法，是將玩家的裝置識別碼儲存至 iTunes KeyChain，這樣您就能在遊戲啟動時從中讀取，並用它來登入。

您必須決定如何為任何其他裝置或平台產生唯一的自訂識別碼。自訂識別碼是其他平台或裝置的有效替代方案，但您必須謹慎產生自訂識別碼。如果太簡單，就有駭客竊取他人帳戶的風險。

### Android 裝置

如需最新的最佳做法，請參閱 [Google 的使用者資料識別碼指導方針](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>

## 不安全的登入機制

可復原登入機制的一個好處是，它們比使用自訂識別碼登入更安全，因為它們需要透過協力廠商進行經過驗證的驗證，而不是依賴使用者的自訂識別碼保持為共用秘密。

## 結論

匿名登入很棒，它為使用者提供完全自動化的登入流程。缺點是帳戶復原，若沒有可復原的登入，有時根本無法復原帳戶。

下列流程圖說明匿名登入，然後新增可復原登入機制的流程。

<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 匿名登入和可復原登入機制" width="866" height="802" data-path="images/playfab/identity/player-identity/tutorials/playfab-anonymous-login-and-recoverable-login.png" />

### 最佳做法

針對您的裝置使用適當的匿名登入，並搭配一或多個帳戶復原選項。


## Related topics

- [伺服器匿名登入驗證](/zh-TW/services/playfab/identity/player-identity/platform-specific-authentication/anonymous-login.md)
- [XBOX Live 遊戲關聯](/zh-TW/services/playfab/identity/player-identity/platform-specific-authentication/xbox-live-add-on.md)
- [使用 Kongregate 和 HTML5 設定 PlayFab 驗證](/zh-TW/services/playfab/identity/player-identity/platform-specific-authentication/kongregate-html5.md)
- [適用於原生與 Phaser 的 JavaScript 快速入門](/zh-TW/services/playfab/sdks/javascript/quickstart.md)
- [NodeJS 快速入門](/zh-TW/services/playfab/sdks/nodejs/quickstart.md)
