میتوانید از Firebase Authentication استفاده کنید تا به کاربران خود اجازه دهید با استفاده از آدرس ایمیل و گذرواژههای خود با Firebase احراز هویت کنند و حسابهای مبتنی بر گذرواژه برنامهتان را مدیریت کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
- اگر هنوز برنامه خود را به پروژه Firebase متصل نکرده اید، این کار را از کنسول Firebase انجام دهید.
- فعال کردن ورود به سیستم ایمیل/گذرواژه:
- در کنسول Firebase ، بخش Auth را باز کنید.
- در برگه روش ورود به سیستم ، روش ورود ایمیل/گذرواژه را فعال کنید و روی ذخیره کلیک کنید.
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
)، وابستگی را برای Firebase Authentication اضافه کنید. کتابخانه برای اندروید توصیه میکنیم از Firebase Android BoM برای کنترل نسخهسازی کتابخانه استفاده کنید.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.5.1")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
با استفاده از Firebase Android BoM ، برنامه شما همیشه از نسخههای سازگار کتابخانههای Firebase Android استفاده میکند.
به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ از اکتبر 2023 ( Firebase BoM 32.5.0) ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).(جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اضافه کنید
اگر تصمیم گرفتید از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.
توجه داشته باشید که اگر از چندین کتابخانه Firebase در برنامه خود استفاده می کنید، ما قویاً توصیه می کنیم از BoM برای مدیریت نسخه های کتابخانه استفاده کنید، که تضمین می کند همه نسخه ها سازگار هستند.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.1.0") }
یک حساب کاربری مبتنی بر رمز عبور ایجاد کنید
برای ایجاد یک حساب کاربری جدید با رمز عبور، مراحل زیر را در فعالیت ورود به سیستم برنامه خود انجام دهید:
- در روش
onCreate
فعالیت ثبت نام خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- وقتی کاربر جدیدی با استفاده از فرم ثبتنام برنامه شما ثبتنام میکند، مراحل اعتبارسنجی حساب جدیدی را که برنامه شما نیاز دارد، تکمیل کنید، مانند تأیید اینکه رمز عبور حساب جدید به درستی تایپ شده است و شرایط پیچیدگی شما را برآورده میکند.
- با ارسال آدرس ایمیل و رمز عبور کاربر جدید به
createUserWithEmailAndPassword
یک حساب کاربری جدید ایجاد کنید:اگر اکانت جدید ایجاد شده باشد، کاربر نیز وارد شده است. در تماس برگشتی، می توانید از روشKotlin+KTX
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
برای دریافت اطلاعات حساب کاربر استفاده کنید.
یک کاربر با آدرس ایمیل و رمز عبور وارد شوید
مراحل ورود کاربر با رمز عبور مشابه مراحل ایجاد یک حساب کاربری جدید است. در فعالیت ورود به سیستم برنامه، موارد زیر را انجام دهید:
- در روش
onCreate
فعالیت ورود به سیستم خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- هنگامی که کاربر وارد برنامه شما می شود، آدرس ایمیل و رمز عبور کاربر را به
signInWithEmailAndPassword
ارسال کنید:اگر ورود به سیستم با موفقیت انجام شد، میتوانید ازKotlin+KTX
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
FirebaseUser
برگشتی برای ادامه استفاده کنید.
توصیه می شود: یک خط مشی رمز عبور تنظیم کنید
شما می توانید امنیت حساب را با اجرای الزامات پیچیدگی رمز عبور بهبود بخشید.
برای پیکربندی یک خط مشی رمز عبور برای پروژه خود، برگه خط مشی رمز عبور را در صفحه تنظیمات احراز هویت کنسول Firebase باز کنید:
سیاست های رمز عبور Firebase Authentication از الزامات رمز عبور زیر پشتیبانی می کند:
حروف کوچک مورد نیاز است
حروف بزرگ مورد نیاز است
کاراکتر عددی مورد نیاز است
نویسه غیر الفبایی مورد نیاز است
کاراکترهای زیر الزامات کاراکتر غیرالفبایی را برآورده می کنند:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
حداقل طول رمز عبور (از 6 تا 30 کاراکتر؛ پیشفرض تا 6 کاراکتر)
حداکثر طول رمز عبور (حداکثر طول 4096 کاراکتر)
شما می توانید اجرای سیاست رمز عبور را در دو حالت فعال کنید:
نیاز : تلاشها برای ثبت نام با شکست مواجه میشوند تا زمانی که کاربر رمز عبوری مطابق با خطمشی شما را بهروزرسانی کند.
اطلاع رسانی : کاربران مجاز به ثبت نام با رمز عبور غیرمنطبق هستند. هنگام استفاده از این حالت، باید بررسی کنید که آیا گذرواژه کاربر با خط مشی سمت کلاینت مطابقت دارد یا خیر و از کاربر بخواهید در صورت عدم مطابقت رمز عبور خود را به نحوی به روز کند.
کاربران جدید همیشه باید رمز عبوری را انتخاب کنند که با خط مشی شما مطابقت داشته باشد.
اگر کاربران فعال دارید، توصیه میکنیم ارتقاء اجباری را هنگام ورود به سیستم فعال نکنید، مگر اینکه بخواهید دسترسی کاربرانی را که گذرواژهشان با خطمشی شما مطابقت ندارد مسدود کنید. در عوض، از حالت اطلاع رسانی استفاده کنید، که به کاربران اجازه می دهد با رمزهای عبور فعلی خود وارد سیستم شوند و آنها را از الزاماتی که رمز عبور آنها فاقد آن است آگاه کند.
توصیه می شود: حفاظت از شمارش ایمیل را فعال کنید
برخی از روشهای Firebase Authentication که آدرسهای ایمیل را بهعنوان پارامتر در نظر میگیرند، اگر آدرس ایمیل ثبت نشده باشد، زمانی که باید ثبت شود (به عنوان مثال، هنگام ورود به سیستم با آدرس ایمیل و رمز عبور)، یا ثبت نام زمانی که باید استفاده نشده باشد، خطاهای خاصی ایجاد میکنند (به عنوان مثال، هنگام تغییر آدرس ایمیل کاربر). در حالی که این می تواند برای پیشنهاد راه حل های خاص به کاربران مفید باشد، اما می تواند توسط عوامل مخرب برای کشف آدرس های ایمیل ثبت شده توسط کاربران شما مورد سوء استفاده قرار گیرد.
برای کاهش این خطر، توصیه میکنیم با استفاده از ابزار Google Cloud gcloud
حفاظت از شمارش ایمیل را برای پروژه خود فعال کنید . توجه داشته باشید که فعال کردن این ویژگی رفتار گزارش خطای Firebase Authentication را تغییر میدهد: مطمئن شوید که برنامه شما به خطاهای خاصتری متکی نیست.
مراحل بعدی
پس از اینکه کاربر برای اولین بار وارد سیستم شد، یک حساب کاربری جدید ایجاد میشود و به اعتبارنامهها (یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائهدهنده تاییدیه) مرتبط میشود که کاربر با آن وارد شده است. این حساب جدید بهعنوان بخشی از پروژه Firebase شما ذخیره میشود و میتوان از آن برای شناسایی کاربر در همه برنامههای پروژه شما، صرف نظر از نحوه ورود کاربر به سیستم استفاده کرد.
در برنامه های خود، می توانید اطلاعات اولیه نمایه کاربر را از شی
FirebaseUser
دریافت کنید. به مدیریت کاربران مراجعه کنید.در قوانین امنیتی Firebase Realtime Database و Cloud Storage خود، میتوانید شناسه کاربری منحصر به فرد کاربر واردشده به سیستم را از متغیر
auth
دریافت کنید و از آن برای کنترل دادههایی که کاربر میتواند به آن دسترسی داشته باشد استفاده کنید.
میتوانید به کاربران اجازه دهید با استفاده از چندین ارائهدهنده احراز هویت، با پیوند دادن اعتبار ارائهدهنده تأیید اعتبار به یک حساب کاربری موجود، به برنامه شما وارد شوند.
برای خروج از سیستم کاربر، با signOut
تماس بگیرید:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();
میتوانید از Firebase Authentication استفاده کنید تا به کاربران خود اجازه دهید با استفاده از آدرس ایمیل و گذرواژههای خود با Firebase احراز هویت کنند و حسابهای مبتنی بر گذرواژه برنامهتان را مدیریت کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
- اگر هنوز برنامه خود را به پروژه Firebase متصل نکرده اید، این کار را از کنسول Firebase انجام دهید.
- فعال کردن ورود به سیستم ایمیل/گذرواژه:
- در کنسول Firebase ، بخش Auth را باز کنید.
- در برگه روش ورود به سیستم ، روش ورود ایمیل/گذرواژه را فعال کنید و روی ذخیره کلیک کنید.
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
)، وابستگی را برای Firebase Authentication اضافه کنید. کتابخانه برای اندروید توصیه میکنیم از Firebase Android BoM برای کنترل نسخهسازی کتابخانه استفاده کنید.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.5.1")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
با استفاده از Firebase Android BoM ، برنامه شما همیشه از نسخههای سازگار کتابخانههای Firebase Android استفاده میکند.
به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ از اکتبر 2023 ( Firebase BoM 32.5.0) ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).(جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اضافه کنید
اگر تصمیم گرفتید از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.
توجه داشته باشید که اگر از چندین کتابخانه Firebase در برنامه خود استفاده می کنید، ما قویاً توصیه می کنیم از BoM برای مدیریت نسخه های کتابخانه استفاده کنید، که تضمین می کند همه نسخه ها سازگار هستند.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.1.0") }
یک حساب کاربری مبتنی بر رمز عبور ایجاد کنید
برای ایجاد یک حساب کاربری جدید با رمز عبور، مراحل زیر را در فعالیت ورود به سیستم برنامه خود انجام دهید:
- در روش
onCreate
فعالیت ثبت نام خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- وقتی کاربر جدیدی با استفاده از فرم ثبتنام برنامه شما ثبتنام میکند، مراحل اعتبارسنجی حساب جدیدی را که برنامه شما نیاز دارد، تکمیل کنید، مانند تأیید اینکه رمز عبور حساب جدید به درستی تایپ شده است و شرایط پیچیدگی شما را برآورده میکند.
- با ارسال آدرس ایمیل و رمز عبور کاربر جدید به
createUserWithEmailAndPassword
یک حساب کاربری جدید ایجاد کنید:اگر اکانت جدید ایجاد شده باشد، کاربر نیز وارد شده است. در تماس برگشتی، می توانید از روشKotlin+KTX
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
برای دریافت اطلاعات حساب کاربر استفاده کنید.
یک کاربر با آدرس ایمیل و رمز عبور وارد شوید
مراحل ورود کاربر با رمز عبور مشابه مراحل ایجاد یک حساب کاربری جدید است. در فعالیت ورود به سیستم برنامه، موارد زیر را انجام دهید:
- در روش
onCreate
فعالیت ورود به سیستم خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- هنگامی که کاربر وارد برنامه شما می شود، آدرس ایمیل و رمز عبور کاربر را به
signInWithEmailAndPassword
ارسال کنید:اگر ورود به سیستم با موفقیت انجام شد، میتوانید ازKotlin+KTX
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
FirebaseUser
برگشتی برای ادامه استفاده کنید.
توصیه می شود: یک خط مشی رمز عبور تنظیم کنید
شما می توانید امنیت حساب را با اجرای الزامات پیچیدگی رمز عبور بهبود بخشید.
برای پیکربندی یک خط مشی رمز عبور برای پروژه خود، برگه خط مشی رمز عبور را در صفحه تنظیمات احراز هویت کنسول Firebase باز کنید:
سیاست های رمز عبور Firebase Authentication از الزامات رمز عبور زیر پشتیبانی می کند:
حروف کوچک مورد نیاز است
حروف بزرگ مورد نیاز است
کاراکتر عددی مورد نیاز است
نویسه غیر الفبایی مورد نیاز است
کاراکترهای زیر الزامات کاراکتر غیرالفبایی را برآورده می کنند:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
حداقل طول رمز عبور (از 6 تا 30 کاراکتر؛ پیشفرض تا 6 کاراکتر)
حداکثر طول رمز عبور (حداکثر طول 4096 کاراکتر)
شما می توانید اجرای سیاست رمز عبور را در دو حالت فعال کنید:
نیاز : تلاشها برای ثبت نام با شکست مواجه میشوند تا زمانی که کاربر رمز عبوری مطابق با خطمشی شما را بهروزرسانی کند.
اطلاع رسانی : کاربران مجاز به ثبت نام با رمز عبور غیرمنطبق هستند. هنگام استفاده از این حالت، باید بررسی کنید که آیا گذرواژه کاربر با خط مشی سمت کلاینت مطابقت دارد یا خیر و از کاربر بخواهید در صورت عدم مطابقت رمز عبور خود را به نحوی به روز کند.
کاربران جدید همیشه باید رمز عبوری را انتخاب کنند که با خط مشی شما مطابقت داشته باشد.
اگر کاربران فعال دارید، توصیه میکنیم ارتقاء اجباری را هنگام ورود به سیستم فعال نکنید، مگر اینکه بخواهید دسترسی کاربرانی را که گذرواژهشان با خطمشی شما مطابقت ندارد مسدود کنید. در عوض، از حالت اطلاع رسانی استفاده کنید، که به کاربران اجازه می دهد با رمزهای عبور فعلی خود وارد سیستم شوند و آنها را از الزاماتی که رمز عبور آنها فاقد آن است آگاه کند.
توصیه می شود: حفاظت از شمارش ایمیل را فعال کنید
برخی از روشهای Firebase Authentication که آدرسهای ایمیل را بهعنوان پارامتر در نظر میگیرند، اگر آدرس ایمیل ثبت نشده باشد، زمانی که باید ثبت شود (به عنوان مثال، هنگام ورود به سیستم با آدرس ایمیل و رمز عبور)، یا ثبت نام زمانی که باید استفاده نشده باشد، خطاهای خاصی ایجاد میکنند (به عنوان مثال، هنگام تغییر آدرس ایمیل کاربر). در حالی که این می تواند برای پیشنهاد راه حل های خاص به کاربران مفید باشد، اما می تواند توسط عوامل مخرب برای کشف آدرس های ایمیل ثبت شده توسط کاربران شما مورد سوء استفاده قرار گیرد.
برای کاهش این خطر، توصیه میکنیم با استفاده از ابزار Google Cloud gcloud
حفاظت از شمارش ایمیل را برای پروژه خود فعال کنید . توجه داشته باشید که فعال کردن این ویژگی رفتار گزارش خطای Firebase Authentication را تغییر میدهد: مطمئن شوید که برنامه شما به خطاهای خاصتری متکی نیست.
مراحل بعدی
پس از اینکه کاربر برای اولین بار وارد سیستم شد، یک حساب کاربری جدید ایجاد میشود و به اعتبارنامهها (یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائهدهنده تاییدیه) مرتبط میشود که کاربر با آن وارد شده است. این حساب جدید بهعنوان بخشی از پروژه Firebase شما ذخیره میشود و میتوان از آن برای شناسایی کاربر در همه برنامههای پروژه شما، صرف نظر از نحوه ورود کاربر به سیستم استفاده کرد.
در برنامه های خود، می توانید اطلاعات اولیه نمایه کاربر را از شی
FirebaseUser
دریافت کنید. به مدیریت کاربران مراجعه کنید.در قوانین امنیتی Firebase Realtime Database و Cloud Storage خود، میتوانید شناسه کاربری منحصر به فرد کاربر واردشده به سیستم را از متغیر
auth
دریافت کنید و از آن برای کنترل دادههایی که کاربر میتواند به آن دسترسی داشته باشد استفاده کنید.
میتوانید به کاربران اجازه دهید با استفاده از چندین ارائهدهنده احراز هویت، با پیوند دادن اعتبار ارائهدهنده تأیید اعتبار به یک حساب کاربری موجود، به برنامه شما وارد شوند.
برای خروج از سیستم کاربر، با signOut
تماس بگیرید:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();
میتوانید از Firebase Authentication استفاده کنید تا به کاربران خود اجازه دهید با استفاده از آدرس ایمیل و گذرواژههای خود با Firebase احراز هویت کنند و حسابهای مبتنی بر گذرواژه برنامهتان را مدیریت کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
- اگر هنوز برنامه خود را به پروژه Firebase متصل نکرده اید، این کار را از کنسول Firebase انجام دهید.
- فعال کردن ورود به سیستم ایمیل/گذرواژه:
- در کنسول Firebase ، بخش Auth را باز کنید.
- در برگه روش ورود به سیستم ، روش ورود ایمیل/گذرواژه را فعال کنید و روی ذخیره کلیک کنید.
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
)، وابستگی را برای Firebase Authentication اضافه کنید. کتابخانه برای اندروید توصیه میکنیم از Firebase Android BoM برای کنترل نسخهسازی کتابخانه استفاده کنید.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.5.1")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
با استفاده از Firebase Android BoM ، برنامه شما همیشه از نسخههای سازگار کتابخانههای Firebase Android استفاده میکند.
به دنبال یک ماژول کتابخانه خاص کاتلین هستید؟ از اکتبر 2023 ( Firebase BoM 32.5.0) ، توسعه دهندگان Kotlin و Java می توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به سؤالات متداول در مورد این ابتکار مراجعه کنید).(جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اضافه کنید
اگر تصمیم گرفتید از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.
توجه داشته باشید که اگر از چندین کتابخانه Firebase در برنامه خود استفاده می کنید، ما قویاً توصیه می کنیم از BoM برای مدیریت نسخه های کتابخانه استفاده کنید، که تضمین می کند همه نسخه ها سازگار هستند.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.1.0") }
یک حساب کاربری مبتنی بر رمز عبور ایجاد کنید
برای ایجاد یک حساب کاربری جدید با رمز عبور، مراحل زیر را در فعالیت ورود به سیستم برنامه خود انجام دهید:
- در روش
onCreate
فعالیت ثبت نام خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- وقتی کاربر جدیدی با استفاده از فرم ثبتنام برنامه شما ثبتنام میکند، مراحل اعتبارسنجی حساب جدیدی را که برنامه شما نیاز دارد، تکمیل کنید، مانند تأیید اینکه رمز عبور حساب جدید به درستی تایپ شده است و شرایط پیچیدگی شما را برآورده میکند.
- با ارسال آدرس ایمیل و رمز عبور کاربر جدید به
createUserWithEmailAndPassword
یک حساب کاربری جدید ایجاد کنید:اگر اکانت جدید ایجاد شده باشد، کاربر نیز وارد شده است. در تماس برگشتی، می توانید از روشKotlin+KTX
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
برای دریافت اطلاعات حساب کاربر استفاده کنید.
یک کاربر با آدرس ایمیل و رمز عبور وارد شوید
مراحل ورود کاربر با رمز عبور مشابه مراحل ایجاد یک حساب کاربری جدید است. در فعالیت ورود به سیستم برنامه، موارد زیر را انجام دهید:
- در روش
onCreate
فعالیت ورود به سیستم خود، نمونه مشترک شیFirebaseAuth
را دریافت کنید:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام راه اندازی فعالیت خود، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- هنگامی که کاربر وارد برنامه شما می شود، آدرس ایمیل و رمز عبور کاربر را به
signInWithEmailAndPassword
ارسال کنید:اگر ورود به سیستم با موفقیت انجام شد، میتوانید ازKotlin+KTX
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
FirebaseUser
برگشتی برای ادامه استفاده کنید.
توصیه می شود: یک خط مشی رمز عبور تنظیم کنید
شما می توانید امنیت حساب را با اجرای الزامات پیچیدگی رمز عبور بهبود بخشید.
برای پیکربندی یک خط مشی رمز عبور برای پروژه خود، برگه خط مشی رمز عبور را در صفحه تنظیمات احراز هویت کنسول Firebase باز کنید:
سیاست های رمز عبور Firebase Authentication از الزامات رمز عبور زیر پشتیبانی می کند:
حروف کوچک مورد نیاز است
حروف بزرگ مورد نیاز است
کاراکتر عددی مورد نیاز است
نویسه غیر الفبایی مورد نیاز است
کاراکترهای زیر الزامات کاراکتر غیرالفبایی را برآورده می کنند:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
حداقل طول رمز عبور (از 6 تا 30 کاراکتر؛ پیشفرض تا 6 کاراکتر)
حداکثر طول رمز عبور (حداکثر طول 4096 کاراکتر)
شما می توانید اجرای سیاست رمز عبور را در دو حالت فعال کنید:
نیاز : تلاشها برای ثبت نام با شکست مواجه میشوند تا زمانی که کاربر رمز عبوری مطابق با خطمشی شما را بهروزرسانی کند.
اطلاع رسانی : کاربران مجاز به ثبت نام با رمز عبور غیرمنطبق هستند. هنگام استفاده از این حالت، باید بررسی کنید که آیا گذرواژه کاربر با خط مشی سمت کلاینت مطابقت دارد یا خیر و از کاربر بخواهید در صورت عدم مطابقت رمز عبور خود را به نحوی به روز کند.
کاربران جدید همیشه باید رمز عبوری را انتخاب کنند که با خط مشی شما مطابقت داشته باشد.
اگر کاربران فعال دارید، توصیه میکنیم ارتقاء اجباری را هنگام ورود به سیستم فعال نکنید، مگر اینکه بخواهید دسترسی کاربرانی را که گذرواژهشان با خطمشی شما مطابقت ندارد مسدود کنید. در عوض، از حالت اطلاع رسانی استفاده کنید، که به کاربران اجازه می دهد با رمزهای عبور فعلی خود وارد سیستم شوند و آنها را از الزاماتی که رمز عبور آنها فاقد آن است آگاه کند.
توصیه می شود: حفاظت از شمارش ایمیل را فعال کنید
برخی از روشهای Firebase Authentication که آدرسهای ایمیل را بهعنوان پارامتر در نظر میگیرند، اگر آدرس ایمیل ثبت نشده باشد، زمانی که باید ثبت شود (به عنوان مثال، هنگام ورود به سیستم با آدرس ایمیل و رمز عبور)، یا ثبت نام زمانی که باید استفاده نشده باشد، خطاهای خاصی ایجاد میکنند (به عنوان مثال، هنگام تغییر آدرس ایمیل کاربر). در حالی که این می تواند برای پیشنهاد راه حل های خاص به کاربران مفید باشد، اما می تواند توسط عوامل مخرب برای کشف آدرس های ایمیل ثبت شده توسط کاربران شما مورد سوء استفاده قرار گیرد.
برای کاهش این خطر، توصیه میکنیم با استفاده از ابزار Google Cloud gcloud
حفاظت از شمارش ایمیل را برای پروژه خود فعال کنید . توجه داشته باشید که فعال کردن این ویژگی رفتار گزارش خطای Firebase Authentication را تغییر میدهد: مطمئن شوید که برنامه شما به خطاهای خاصتری متکی نیست.
مراحل بعدی
پس از اینکه کاربر برای اولین بار وارد سیستم شد، یک حساب کاربری جدید ایجاد میشود و به اعتبارنامهها (یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائهدهنده تاییدیه) مرتبط میشود که کاربر با آن وارد شده است. این حساب جدید بهعنوان بخشی از پروژه Firebase شما ذخیره میشود و میتوان از آن برای شناسایی کاربر در همه برنامههای پروژه شما، صرف نظر از نحوه ورود کاربر به سیستم استفاده کرد.
در برنامه های خود، می توانید اطلاعات اولیه نمایه کاربر را از شی
FirebaseUser
دریافت کنید. به مدیریت کاربران مراجعه کنید.در قوانین امنیتی Firebase Realtime Database و Cloud Storage خود، میتوانید شناسه کاربری منحصر به فرد کاربر واردشده به سیستم را از متغیر
auth
دریافت کنید و از آن برای کنترل دادههایی که کاربر میتواند به آن دسترسی داشته باشد استفاده کنید.
میتوانید به کاربران اجازه دهید با استفاده از چندین ارائهدهنده احراز هویت، با پیوند دادن اعتبار ارائهدهنده تأیید اعتبار به یک حساب کاربری موجود، به برنامه شما وارد شوند.
برای خروج از سیستم کاربر، با signOut
تماس بگیرید:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();