您可以使用 Firebase Authentication 讓使用者透過應用程式登入遊戲 以及更多登入方式,包括電子郵件地址和密碼登入 聯合識別資訊提供者,例如 Google 登入和 Facebook 登入。這個 教學課程可協助您開始使用 Firebase Authentication,並說明如何新增 電子郵件地址和密碼登入遊戲。
事前準備
使用前 Firebase Authentication、 請完成下列操作:
註冊 Unity 專案,並將其設定為使用 Firebase。
如果您的 Unity 專案已在使用 Firebase, 已完成註冊和設定程序。
如果您沒有 Unity 專案,可以 範例應用程式。
將 Firebase Unity SDK (特別是
FirebaseAuth.unitypackage
) 新增至 Unity 專案
請注意,將 Firebase 新增至 Unity 專案時,必須一併執行以下兩者的工作: Firebase 控制台,然後在開啟的 Unity 專案中 (例如,您可以從控制台下載 Firebase 設定檔,然後 放入您的 Unity 專案中)。
註冊新使用者
建立表單,讓新使用者使用電子郵件註冊您的遊戲
地址和密碼使用者填妥表單後,請驗證電子郵件
地址和密碼,然後將這些資訊傳遞至
CreateUserWithEmailAndPasswordAsync
方法:
auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
// Firebase user has been created.
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
登入現有使用者
建立表單,讓現有使用者透過他們的電子郵件地址登入
和密碼。使用者填妥表單時,請呼叫
SignInWithEmailAndPasswordAsync
方法:
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
設定驗證狀態變更事件處理常式,並取得使用者資料
如要回應登入和登出事件,請將事件處理常式附加至全域 驗證物件每當使用者登入時,系統就會呼叫這個處理常式 狀態變更。因為只有在 驗證物件 而且在完成所有網路呼叫後 來取得登入使用者的相關資訊。
使用 FirebaseAuth
物件的 StateChanged
註冊事件處理常式
] 欄位。使用者成功登入後,您就會收到使用者的相關資訊
事件處理常式中。
最後,當這個物件呼叫 Destroy
時,它就會自動呼叫
OnDestroy
。清除 OnDestroy
中 Auth 物件的參照。
void InitializeFirebase() {
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
if (auth.CurrentUser != user) {
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
&& auth.CurrentUser.IsValid();
if (!signedIn && user != null) {
DebugLog("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn) {
DebugLog("Signed in " + user.UserId);
displayName = user.DisplayName ?? "";
emailAddress = user.Email ?? "";
photoUrl = user.PhotoUrl ?? "";
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
後續步驟
瞭解如何新增對其他識別資訊提供者和匿名訪客的支援 帳戶: