يمكنك استخدام Firebase Authentication للسماح للمستخدمين بالمصادقة مع تستخدم منصة Firebase عناوين البريد الإلكتروني وكلمات المرور، وإدارة التطبيقات. حسابات مستندة إلى كلمة المرور.
قبل البدء
إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android
- إذا لم تكن قد ربطت تطبيقك بمشروعك على Firebase، يمكنك إجراء ذلك من وحدة تحكّم Firebase.
- تفعيل تسجيل الدخول باستخدام البريد الإلكتروني/كلمة المرور:
- في وحدة تحكُّم Firebase، افتح قسم المصادقة.
- في علامة التبويب طريقة تسجيل الدخول، فعِّل تسجيل الدخول البريد الإلكتروني/كلمة المرور. وانقر على حفظ.
في ملف 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:33.2.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، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في 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:23.0.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 Authentication طريقة تستخدم عناوين البريد الإلكتروني عند طرح المَعلمات أخطاء محددة إذا كان عنوان البريد الإلكتروني غير مسجَّل عندما يجب تسجيله (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو المسجَّل عندما يجب عدم استخدامه (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني لمستخدم). وفي حين أن هذا قد يكون مفيدًا في اقتراح حلول انتصاف محددة على المستخدمين، إلا أنه يمكنه أيضًا إساءة استخدام من قِبل جهات ضارة لاكتشاف عناوين البريد الإلكتروني المسجّلة بواسطة المستخدمين.
للتخفيف من هذه الخطر، ننصحك بتفعيل الحماية من تعداد البريد الإلكتروني.
لمشروعك باستخدام أداة gcloud
في Google Cloud. لاحظ أن تفعيل هذا
تغييرات في سلوك ميزة الإبلاغ عن أخطاء Firebase Authentication: تأكد من تطبيقك
لا يعتمد على الأخطاء الأكثر تحديدًا.
الخطوات التالية
بعد تسجيل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد المرتبطة ببيانات الاعتماد - أي اسم المستخدم وكلمة المرور، أو الرقم أو معلومات مقدم المصادقة - المستخدم الذي سجّل الدخول باستخدامه. هذا الجديد كجزء من مشروع Firebase، ويمكن استخدامه لتحديد مستخدم في كل تطبيق في مشروعك، بغض النظر عن كيفية تسجيل دخوله.
-
في تطبيقاتك، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من الكائن
FirebaseUser
. عرض إدارة المستخدمين: في Firebase Realtime Database وCloud Storage قواعد الأمان، تتيح لك الحصول على معرّف المستخدم الفريد للمستخدم الذي سجّل الدخول من المتغير
auth
، واستخدامها للتحكم في البيانات التي يمكن للمستخدم الوصول إليها
يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طرق مصادقة متعددة. موفِّري خدمة المصادقة من خلال ربط بيانات اعتماد موفر المصادقة حساب مستخدم حالي
لتسجيل خروج مستخدم، اتصل بالرقم
signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();