شما میتوانید از Firebase Authentication برای احراز هویت کاربران خود با استفاده از آدرسهای ایمیل و رمزهای عبورشان در Firebase و مدیریت حسابهای کاربری مبتنی بر رمز عبور برنامه خود استفاده کنید.
قبل از اینکه شروع کنی
قبل از اینکه بتوانید Firebase Authentication استفاده کنید، باید:
پروژه یونیتی خود را ثبت کنید و آن را برای استفاده از فایربیس پیکربندی کنید.
اگر پروژه یونیتی شما از قبل از فایربیس استفاده میکند، پس از قبل برای فایربیس ثبت و پیکربندی شده است.
اگر پروژه یونیتی ندارید، میتوانید یک برنامه نمونه را دانلود کنید.
کیت توسعه نرمافزاری (SDK) مربوط به Firebase Unity (بهطور خاص،
FirebaseAuth.unitypackage) را به پروژه Unity خود اضافه کنید.
توجه داشته باشید که اضافه کردن Firebase به پروژه Unity شما شامل وظایفی هم در کنسول Firebase و هم در پروژه Unity باز شما میشود (برای مثال، شما فایلهای پیکربندی Firebase را از کنسول دانلود میکنید، سپس آنها را به پروژه Unity خود منتقل میکنید).
به کلاس Firebase.Auth.FirebaseAuth دسترسی پیدا کنید.
کلاس FirebaseAuth دروازهای برای تمام فراخوانیهای API است و از طریق FirebaseAuth.DefaultInstance قابل دسترسی است. Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
ایجاد حساب کاربری مبتنی بر رمز عبور
برای ایجاد یک حساب کاربری جدید با رمز عبور، مراحل زیر را در کد ورود به برنامه خود انجام دهید:
- وقتی یک کاربر جدید با استفاده از فرم ثبت نام برنامه شما ثبت نام میکند، هرگونه مراحل اعتبارسنجی حساب جدید را که برنامه شما نیاز دارد، مانند تأیید صحت تایپ رمز عبور حساب جدید و مطابقت آن با الزامات پیچیدگی شما، تکمیل کنید.
- با ارسال آدرس ایمیل و رمز عبور کاربر جدید به
FirebaseAuth.CreateUserWithEmailAndPassword، یک حساب کاربری جدید ایجاد کنید: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); });
ورود کاربر با آدرس ایمیل و رمز عبور
مراحل ورود به سیستم کاربر با رمز عبور مشابه مراحل ایجاد یک حساب کاربری جدید است. در تابع ورود به سیستم برنامه خود، موارد زیر را انجام دهید:
- وقتی کاربری وارد برنامه شما میشود، آدرس ایمیل و رمز عبور کاربر را به
FirebaseAuth.SignInWithEmailAndPasswordارسال کنید: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); });
- همچنین میتوانید مانند سایر گردشهای کاری، اعتبارنامه ایجاد کرده و وارد سیستم شوید:
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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); });
توصیه میشود: یک سیاست رمز عبور تنظیم کنید
شما میتوانید با اعمال الزامات پیچیدگی رمز عبور، امنیت حساب کاربری خود را بهبود بخشید.
برای پیکربندی یک سیاست رمز عبور برای پروژه خود، بخش سیاست رمز عبور را در برگه امنیت > احراز هویت > تنظیمات کنسول Firebase باز کنید:
سیاستهای رمز عبور Firebase Authentication از الزامات رمز عبور زیر پشتیبانی میکنند:
کاراکتر حروف کوچک الزامی است
کاراکتر حروف بزرگ الزامی است
کاراکتر عددی مورد نیاز است
کاراکتر غیرحرف و عددی الزامی است
کاراکترهای زیر الزام کاراکتر غیرحرفی-عددی را برآورده میکنند:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~حداقل طول رمز عبور (از ۶ تا ۳۰ کاراکتر متغیر است؛ پیشفرض ۶ است)
حداکثر طول رمز عبور (حداکثر طول ۴۰۹۶ کاراکتر)
شما میتوانید اجرای سیاست رمز عبور را در دو حالت فعال کنید:
الزام : تلاش برای ثبت نام تا زمانی که کاربر رمز عبور خود را مطابق با خطمشی شما تغییر ندهد، ناموفق خواهد بود.
Notify : کاربران مجاز به ثبت نام با رمز عبور غیر منطبق با قوانین هستند. هنگام استفاده از این حالت، باید بررسی کنید که آیا رمز عبور کاربر با خطمشیهای سمت کلاینت مطابقت دارد یا خیر و در صورت عدم مطابقت، به نحوی از کاربر بخواهید رمز عبور خود را بهروزرسانی کند.
کاربران جدید همیشه موظفند رمز عبوری را انتخاب کنند که با خطمشی شما مطابقت داشته باشد.
اگر کاربران فعالی دارید، توصیه میکنیم گزینهی «ارتقای اجباری هنگام ورود» را فعال نکنید، مگر اینکه قصد داشته باشید دسترسی کاربرانی را که رمز عبورشان با خطمشی شما مطابقت ندارد، مسدود کنید. در عوض، از حالت اعلان استفاده کنید که به کاربران اجازه میدهد با رمز عبور فعلی خود وارد سیستم شوند و آنها را از الزاماتی که رمز عبورشان فاقد آنهاست، مطلع کنید.
توصیه میشود: فعال کردن محافظت از شمارش ایمیل
برخی از روشهای Firebase Authentication که آدرسهای ایمیل را به عنوان پارامتر میگیرند، در صورتی که آدرس ایمیل ثبت نشده باشد، در حالی که باید ثبت شود (مثلاً هنگام ورود با آدرس ایمیل و رمز عبور)، یا در حالی که باید استفاده نشود (مثلاً هنگام تغییر آدرس ایمیل کاربر)، ثبت شده باشد، خطاهای خاصی را ایجاد میکنند. اگرچه این میتواند برای پیشنهاد راهحلهای خاص به کاربران مفید باشد، اما میتواند توسط افراد مخرب برای کشف آدرسهای ایمیل ثبت شده توسط کاربران شما نیز مورد سوءاستفاده قرار گیرد.
برای کاهش این خطر، توصیه میکنیم با استفاده از ابزار gcloud گوگل کلود ، محافظت از شمارش ایمیل را برای پروژه خود فعال کنید . توجه داشته باشید که فعال کردن این ویژگی، رفتار گزارش خطای Firebase Authentication را تغییر میدهد: مطمئن شوید که برنامه شما به خطاهای خاصتر متکی نیست.
مراحل بعدی
پس از اینکه کاربر برای اولین بار وارد سیستم میشود، یک حساب کاربری جدید ایجاد میشود و به اطلاعات احراز هویت - یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائه دهنده مجوز - که کاربر با آن وارد سیستم شده است، پیوند داده میشود. این حساب جدید به عنوان بخشی از پروژه Firebase شما ذخیره میشود و میتواند برای شناسایی کاربر در هر برنامه در پروژه شما، صرف نظر از نحوه ورود کاربر، مورد استفاده قرار گیرد.
در برنامههای خود، میتوانید اطلاعات اولیه پروفایل کاربر را از شیء
Firebase.Auth.FirebaseUserدریافت کنید:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
در قوانین امنیتی پایگاه داده و Cloud Storage Firebase Realtime Database ، میتوانید شناسه کاربری منحصر به فرد کاربر وارد شده را از متغیر
authدریافت کنید و از آن برای کنترل دادههایی که کاربر میتواند به آنها دسترسی داشته باشد، استفاده کنید.
برای خروج کاربر، تابع SignOut() فراخوانی کنید:
auth.SignOut();