میتوانید از Firebase Authentication برای ایجاد و استفاده از حسابهای ناشناس موقت برای اصالتسنجی با Firebase استفاده کنید. از این حسابهای موقت ناشناس میتوان برای اجازه دادن به کاربرانی که هنوز در برنامه شما ثبتنام نکردهاند برای کار با دادههای محافظتشده توسط قوانین امنیتی استفاده کرد. اگر کاربر ناشناسی تصمیم بگیرد در برنامه شما ثبتنام کند، میتوانید اعتبارنامههای ورود به سیستم او را به حساب ناشناس پیوند دهید تا بتواند در جلسات آینده نیز با دادههای محافظتشدهاش کار کند.
قبل از شروع
- اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید.
-
در فایل Gradle واحد (سطح برنامه)
(معمولاً
<project>/<app-module>/build.gradle.ktsیا<project>/<app-module>/build.gradle)، وابستگی کتابخانه Firebase Authentication را برای Android اضافه کنید. توصیه میکنیم از Firebase Android BoM برای کنترل نسخهبندی کتابخانه استفاده کنید.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.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 Android استفاده خواهد کرد.
(جایگزین) افزودن وابستگیهای کتابخانه 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:25.0.0") }
- اگر هنوز برنامهتان را به پروژه Firebase متصل نکردهاید، این کار را از کنسول Firebase انجام دهید.
-
فعال کردن اصالتسنجی ناشناس:
- در کنسول Firebase، به امنیت > اصالتسنجی بروید.
- در زبانه روش ورود به سیستم، ارائهدهنده ورود به سیستم ناشناس را فعال کنید.
- اختیاری: اگر پروژهتان را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را فعال کنید. وقتی این تنظیم را فعال میکنید، حسابهای ناشناس قدیمیتر از ۳۰ روز بهطور خودکار حذف خواهند شد. در پروژههایی که پاکسازی خودکار در آنها فعال است، اصالتسنجی ناشناس دیگر در محدودیتهای استفاده یا سهمیههای صورتحساب محاسبه نخواهد شد. پاکسازی خودکار را ببینید.
اصالتسنجی ناشناس با Firebase
وقتی کاربری که از سیستم خارج شده است از ویژگی برنامهای استفاده میکند که به اصالتسنجی با Firebase نیاز دارد، با تکمیل مراحل زیر، کاربر را بهصورت ناشناس به سیستم وارد کنید:
- در روش
onCreateفعالیتتان، نمونه همرسانیشده از شیءFirebaseAuthرا دریافت کنید:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- هنگام مقداردهی اولیه «فعالیت»، بررسی کنید که آیا کاربر درحالحاضر به سیستم وارد شده است یا نه:
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تکمیل کنید. برای مثال، دریافت کردن نشانه شناسایی Google کاربر، نشانه دسترسی Facebook، یا نشانی ایمیل و گذرواژه. AuthCredentialرا برای ارائهدهنده اصالتسنجی جدید دریافت کنید:ورود با Google
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 اجازه میدهید حسابهای ناشناس قدیمیتر از ۳۰ روز را بهطور خودکار حذف کند. در پروژههایی که پاکسازی خودکار در آنها فعال است، اصالتسنجی ناشناس در محدودیتهای استفاده یا سهمیههای صورتحساب محاسبه نمیشود.
- هر حساب ناشناسی که پساز فعال کردن پاکسازی خودکار ایجاد شود ممکن است در هر زمانی پساز ۳۰ روز از ایجاد بهطور خودکار حذف شود.
- حسابهای ناشناس موجود ۳۰ روز پساز فعال کردن پاکسازی خودکار واجدشرایط حذف خودکار خواهند بود.
- اگر پاکسازی خودکار را خاموش کنید، هر حساب ناشناسی که برای حذف شدن زمانبندی شده باشد همچنان برای حذف شدن زمانبندی خواهد ماند.
- اگر حساب ناشناسی را با پیوند دادن آن به هر روش ورود به سیستم «ارتقا دهید»، حساب بهطور خودکار حذف نخواهد شد.
اگر میخواهید قبلاز فعال کردن این ویژگی ببینید چند کاربر تحت تأثیر قرار میگیرند و پروژه خود را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید در is_anon در گزارش
وقایع ابری براساس آن فیلتر کنید.
مراحل بعدی
اکنون که کاربران میتوانند با Firebase احراز هویت کنند، میتوانید دسترسی آنها به دادهها در پایگاه داده Firebase خود را بااستفاده از قوانین Firebase کنترل کنید.