شما میتوانید Firebase Authentication برای ایجاد و استفاده از حسابهای کاربری ناشناس موقت برای احراز هویت با Firebase استفاده کنید. این حسابهای کاربری ناشناس موقت میتوانند برای کاربرانی که هنوز در برنامه شما ثبت نام نکردهاند، جهت کار با دادههای محافظت شده توسط قوانین امنیتی استفاده شوند. اگر یک کاربر ناشناس تصمیم به ثبت نام در برنامه شما بگیرد، میتوانید اطلاعات ورود او را به حساب کاربری ناشناس پیوند دهید تا بتواند در جلسات آینده با دادههای محافظت شده خود به کار خود ادامه دهد.
قبل از اینکه شروع کنی
- اگر هنوز Firebase را به پروژه اندروید خود اضافه نکردهاید، آن را اضافه کنید.
- در فایل 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:34.9.0")) // 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 استفاده خواهد کرد.
(جایگزین) اضافه کردن وابستگیهای کتابخانه 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:24.0.1") }
- اگر هنوز برنامه خود را به پروژه Firebase خود متصل نکردهاید، این کار را از کنسول Firebase انجام دهید.
- فعال کردن احراز هویت ناشناس:
- در کنسول Firebase ، بخش Auth را باز کنید.
- در صفحه روشهای ورود ، روش ورود ناشناس را فعال کنید.
- اختیاری : اگر پروژه خود را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را فعال کنید. وقتی این تنظیم را فعال میکنید، حسابهای ناشناس قدیمیتر از 30 روز به طور خودکار حذف میشوند. در پروژههایی که پاکسازی خودکار فعال است، احراز هویت ناشناس دیگر در محدودیتهای استفاده یا سهمیههای صورتحساب محاسبه نمیشود. به پاکسازی خودکار مراجعه کنید.
احراز هویت با فایربیس به صورت ناشناس
وقتی کاربری که از سیستم خارج شده و از آن خارج شده است از یک ویژگی برنامه که نیاز به احراز هویت با Firebase دارد استفاده میکند، با انجام مراحل زیر، کاربر را به صورت ناشناس وارد سیستم کنید:
- در متد
onCreateمربوط به activity خود، نمونهی مشترک شیءFirebaseAuthرا دریافت کنید:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام مقداردهی اولیه Activity، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- در نهایت، برای ورود به عنوان یک کاربر ناشناس،
signInAnonymouslyرا فراخوانی کنید:اگر ورود موفقیتآمیز باشد، میتوانید از متدKotlin
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .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, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUserبرای دریافت اطلاعات حساب کاربر استفاده کنید.
تبدیل حساب کاربری ناشناس به حساب کاربری دائمی
وقتی یک کاربر ناشناس در برنامه شما ثبت نام میکند، ممکن است بخواهید به او اجازه دهید تا با حساب جدیدش به کار خود ادامه دهد - برای مثال، ممکن است بخواهید مواردی را که کاربر قبل از ثبت نام به سبد خرید خود اضافه کرده است، در سبد خرید حساب جدیدش نیز موجود کنید. برای انجام این کار، مراحل زیر را انجام دهید:
- وقتی کاربر ثبتنام میکند، جریان ورود به سیستم را برای ارائهدهندهی احراز هویت کاربر تا فراخوانی یکی از متدهای
FirebaseAuth.signInWithتکمیل کنید، اما این شامل آن نمیشود. برای مثال، توکن شناسهی گوگل، توکن دسترسی فیسبوک یا آدرس ایمیل و رمز عبور کاربر را دریافت کنید. برای ارائه دهنده احراز هویت جدید، یک
AuthCredentialدریافت کنید:ورود به سیستم گوگل
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
ورود به فیسبوک
Kotlin
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
ورود با ایمیل و رمز عبور
Kotlin
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
شیء
AuthCredentialرا به متدlinkWithCredentialکاربر در حال ورود به سیستم ارسال کنید:Kotlin
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
اگر فراخوانی linkWithCredential با موفقیت انجام شود، حساب کاربری جدید کاربر میتواند به دادههای Firebase حساب کاربری ناشناس دسترسی پیدا کند.
تمیز کردن خودکار
اگر پروژه خود را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را در کنسول Firebase فعال کنید. وقتی این ویژگی را فعال میکنید، به Firebase اجازه میدهید حسابهای ناشناس قدیمیتر از 30 روز را به طور خودکار حذف کند. در پروژههایی که پاکسازی خودکار فعال است، احراز هویت ناشناس در محدودیتهای استفاده یا سهمیههای صورتحساب محاسبه نمیشود.
- هر حساب کاربری ناشناسی که پس از فعال کردن پاکسازی خودکار ایجاد شود، ممکن است هر زمان پس از 30 روز پس از ایجاد، به طور خودکار حذف شود.
- حسابهای کاربری ناشناس موجود، ۳۰ روز پس از فعال کردن قابلیت پاکسازی خودکار، واجد شرایط حذف خودکار خواهند بود.
- اگر پاکسازی خودکار را خاموش کنید، هر حساب ناشناسی که برای حذف برنامهریزی شده باشد، همچنان در برنامه حذف باقی خواهد ماند.
- اگر یک حساب کاربری ناشناس را با پیوند دادن آن به هر روش ورود به سیستم «ارتقاء» دهید، حساب به طور خودکار حذف نمیشود.
اگر میخواهید قبل از فعال کردن این ویژگی، ببینید چند کاربر تحت تأثیر قرار میگیرند، و پروژه خود را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید در Cloud Logging بر اساس is_anon فیلتر کنید.
مراحل بعدی
اکنون که کاربران میتوانند با Firebase احراز هویت شوند، میتوانید دسترسی آنها به دادههای موجود در پایگاه داده Firebase خود را با استفاده از قوانین Firebase کنترل کنید.