- 匿名
- 可復原
將可復原的登入新增至現有的匿名帳戶
您的第一次登入是匿名登入是非常常見的。這可讓玩家毫無阻礙地進入遊戲。 但是一旦玩家投入您的遊戲,您就應該提示他們新增可復原的登入方法,讓他們的帳戶在裝置故障或發生其他問題時可以復原。 本節說明如何將可復原的登入機制新增至匿名帳戶。匿名登入仍然適用,並且可以繼續作為玩家主要的無阻礙登入方式。許多玩家只有在嘗試復原帳戶、使用平台特定功能或連結第二部匿名裝置時,才會再次使用這些選項。

- AddUsernamePassword 用來啟用 LoginWithPlayFab 和 LoginWithEmailAddress 其中之一或兩者。這些選項會直接在 PlayFab 中儲存使用者名稱/電子郵件/密碼認證。為了讓玩家復原其帳戶,您的遊戲、網站或客戶服務可以觸發:
- 針對該電子郵件地址的 SendAccountRecoveryEmail。如果玩家輸入假的電子郵件地址,您仍然可以使用 PlayFab Game Manager 更新玩家的電子郵件地址,但請務必確保您的客戶服務代表經過訓練,能夠留意常見的社交工程詐騙手法,以便只為帳戶的實際擁有者更新電子郵件地址。
- 首先,提示使用者登入該服務 (詳細資訊請參閱登入基本概念和最佳做法)。
- 登入之後,這些服務會提供某種權杖,可將其傳遞給 PlayFab。
- 這可讓 PlayFab 安全地連結至該帳戶,而不需要知道使用者在該服務中的認證。
有些服務需要 PlayFab 具備一些額外資訊 (例如應用程式識別碼),才能為您的遊戲對該服務進行驗證呼叫。在設定遊戲時,請務必查看相關服務的 Add-on Marketplace 頁面。
最佳做法
使用匿名登入以零阻礙的方式建立新玩家。在教學階段之後,溫和地鼓勵玩家將您偏好的可復原認證連結至其帳戶。 如果您使用的是協力廠商驗證系統,請從該服務擷取適當的權杖 (透過 API 呼叫或 SDK 函式),然後呼叫適當的 PlayFab API,將玩家在該服務的帳戶連結至其 PlayFab 帳戶:LinkFacebookAccount、LinkGameCenterAccount、LinkGoogleAccount、LinkKongregate、LinkSteamAccount、LinkTwitch、LinkWindowsHello<!— LinkWindowsHello —>。
最佳做法
- 為了保護使用者隱私,請不要儲存或保存任何使用者認證 (這也是符合 COPPA 規範所需的眾多步驟之一,如果您的遊戲有此需求,請務必與您的法律顧問討論,以確認您符合規範)。
- 如果您使用的是 PlayFab 認證,或直接呼叫協力廠商 API,則應盡快從記憶體中清除其登入資訊。一般而言,協力廠商 SDK 會為您處理這項工作。
- 請勿將任何可識別或安全資訊保留在記憶體中超過所需的時間,也不要將其儲存至檔案或遠端位置。PlayFab API 的設計是只使用最少的必要資訊。
將新裝置新增至現有的可復原帳戶
PlayFab 允許多個登入和裝置存取同一個帳戶。正確設定後,玩家可以在任何裝置上玩遊戲,放下該裝置,拿起新裝置 (即使是不同類型、品牌、平台或作業系統),然後繼續玩同一款遊戲,而所有資料都完好無缺。需求
玩家必須擁有兩部裝置:- Device1 - 已設定帳戶,且已正確設定可復原認證。理想情況下,第二部裝置也未繫結至帳戶。此流程會讓任何僅以第二部裝置識別碼作為登入機制的帳戶成為孤立帳戶,使其無法復原。不過,PlayFab 提供了可以安全偵測並警告此情況的選項。
- 此案例中的所有活動都發生在 Device2 上 - 首先,第二部裝置的使用者登入流程必須反轉。您必須為使用者提供透過可復原機制登入的選項,而不要自動以裝置識別碼登入。
- 在 Device2 上登入玩家帳戶 (使用可復原的帳戶認證) 之後,呼叫 GetPlayerCombinedInfo。
- 對於該資訊中傳回的每種裝置類型,最近登入的裝置識別碼會傳回在 result.InfoResultPayload.AccountInfo 中。
- 呼叫適當的 LinkAndroidDeviceID、LinkIOSDeviceID 或其他裝置特定的 API 呼叫。
- 如果成功,就完成了,繼續正常遊戲。
- 但就像任何 API 呼叫一樣,請準備好擷取錯誤。具體而言,請留意表示裝置已連結至帳戶的錯誤傳回。
- 在此情況下,以您要將此裝置繫結至此帳戶嗎訊息提示玩家。
- 請務必提供資訊,說明如果繼續操作,另一個帳戶可能會遺失。
- 如果玩家接受此警告,請將 ForceLink 屬性設定為 True,重新傳送連結要求。
- 這會將 Device2 識別碼從舊帳戶取消連結 (如果沒有其他登入機制連結至該帳戶,可能會使其成為孤立帳戶),並將其繫結至新帳戶。
最佳做法
使用 CloudScript 或 PlayStream 事件,將已放棄帳戶的資訊記錄在客戶服務代表可以復原的地方,以防玩家犯錯。即使是像將 PlayFabId 寫入雲端記錄檔這樣簡單的做法,也可能為忠實玩家挽救一個帳戶。
將無阻礙裝置識別碼繫結至現有的可復原帳戶
此案例與上述情況非常類似,差別在於帳戶是使用可復原認證建立的。 您可以在事後繫結匿名登入,將現有的遊戲登入畫面轉換為無阻礙登入。此處的步驟與上述情況幾乎相同,只是只有單一裝置 (也就是上述流程中的 Device2)。 裝置狀態:裝置識別碼未繫結至玩家帳戶。 使用裝置執行可復原登入之後,呼叫 GetPlayerCombinedInfo。同樣地,透過 result.InfoResultPayload.AccountInfo 中傳回的資訊,判斷裝置識別碼是否與已繫結的裝置識別碼相符。 由於該裝置從未登入過此帳戶,相關的裝置識別碼 (AccountInfo.IosDeviceInfo、AccountInfo.AndroidDeviceInfo 等) 將不會符合裝置識別碼。 裝置狀態:已使用可復原認證登入,但裝置識別碼未繫結至玩家帳戶。 由於裝置未繫結至此帳戶,我們可以嘗試繫結它。呼叫適當的 LinkAndroidDeviceID、LinkIOSDeviceID 或其他裝置特定的 API 呼叫。 如果成功,就完成了,繼續正常遊戲。 但同樣地,請準備好擷取錯誤。具體而言,請留意表示裝置已連結至帳戶的錯誤傳回。在此情況下,以您要將此裝置繫結至此帳戶嗎訊息提示玩家。 請務必提供資訊,說明如果繼續操作,另一個帳戶可能會遺失。如果玩家接受此警告,請將 ForceLink 屬性設定為 True,重新傳送連結要求。 這會將裝置識別碼從舊帳戶取消連結 (如果沒有其他登入機制連結至該帳戶,可能會使其成為孤立帳戶),並將其繫結至新帳戶。 最佳做法: 使用 CloudScript 或 PlayStream 事件,將已放棄帳戶的資訊記錄在客戶服務代表可以復原的地方,以防玩家犯錯。即使是像將 PlayFabId 寫入雲端記錄檔這樣簡單的做法,也可能為忠實玩家挽救一個帳戶。 裝置狀態:裝置識別碼已繫結至玩家帳戶。 此時,可以在該裝置上使用無阻礙登入,而不是可復原認證。其他最佳做法
上述步驟涉及在登入之前提示使用者。無阻礙登入則是在不事先詢問玩家的情況下登入。您可以透過下列建議找到理想的折衷方案: 無阻礙登入 API:您的無阻礙登入都有一個名為 CreateAccount 的要求參數。 範例:- AndroidRequest.CreateAccount
- IosRequest.CreateAccount。請依照下列指導方針,為此屬性選取 true 或 false:
- 在您的登入場景中,您的遊戲可以立即嘗試以 CreateAccount=false 進行無阻礙登入。如果成功,表示此玩家已使用此裝置登入過遊戲,可以安全地直接跳到遊戲場景。擷取此呼叫的錯誤回呼,並讓它顯示首次登入選項。
- 首次登入場景:對於任何具備無阻礙登入功能的裝置,此場景應包含立即遊玩按鈕,以及可讓玩家透過 Facebook、Twitch、Google 或其他可復原登入選項登入現有帳戶的按鈕。立即遊玩按鈕應以 CreateAccount=true 啟動無阻礙登入。
- 登出:提供登出按鈕,返回您的首次登入場景,但不要自動啟動無阻礙登入。這可讓使用者選擇以可復原選項登入,然後將裝置繫結至該帳戶,藉此放棄其裝置繫結帳戶。
