مقدمة الى Firebase Authentication | تسجيل الدخول باستخدام البريد الإلكتروني و Anonymous Login
ماهو Firebase Auth
هي طريقة لربط مستخدمي تطبيقك في Firebase ولها 6 طرق في تسجيل الدخول:
- Email/Password
- Google باستخدام حساب
- Facebook باستخدام حساب
- Github
- Anonymous (تسجيل الدخول بدون إعطاء أي معلومات)
- تسجيل الدخول باستخدام رقم الهاتف
وسنحاول شرح معظم هذه الطرق في الدروس القادمة,أما في هذا الدرس سنشرح أسهل طريقتين لتسجيل الدخول إما باستخدام البريد الإلكتروني أو Anonymous
تسجيل الدخول باستخدام Anonymous Login
هذه الطريقة لاتطلب من المستخدم إعطاء أي معلومات بل ولن يشعر المستخدم بأنه قد تم تسجيله بالفعل,وتفيد هذه الطريقة في حالة أنك تريد ربط هذا المستخدم وحفظ بيانات اللعبة على سبيل المثال لديك على السيرفر والمستخدم لايريد إعطاء أي معلومات .
نبدأ بإنشاء مشروع جديد على Firebase ومشروع جديد في Android Studio ونربط مشروع الAndroid Studio بمشروع الFirebase (كما فعلنا في الدرس السابق)
ثم نضيف مكتبة Firebase Auth الى مشروع الأندرويد في (build.gradle:app) ثم نعمل Sync
compile 'com.google.firebase:firebase-auth:10.2.1'
ثم نذهب الى Firebase Console ونفعل Anonymous
بعد ذلك نذهب الى MainActivity ثم نعرف اوبجكت من FirebaseAuth ونسميه mAuth ونعطيه قيمة في onCreate
ثم ننشئ ميثود signInAnonymously ونستدعي الميثود في onCreate داخل هذه الميثود استخدمنا ميثود من FirebaseAuth اسمها signInAnonymously وأضفنا لها addOnCompleteListener وهي interface تعيد لنا نتيجة عملية تسجيل الدخول وتعيد لنا task وقمنا بعمل log لنتيجة عملية التسجيل,وإذا كانت العملية غير ناجحة(!Succesful) نقوم بإظهار رسالة Toast
نجرب تشغيل التطبيق وإذا نجحت العملية سنجد true في logcat
نتوجه الى Firebase Console داخل Authentication ثم Users وسنجد أنه تم تسجيل مستخدم جديد وتظهر لنا User UID وهو ID ينشئ لكل مستخدم موجود على Firebase
تسجيل الدخول باستخدام بريد الكتروني Email & Password
بدايةً يجب علينا تفعيل تسجيل الدخول باستخدام البريد الإلكتروني من Firebase Console
بعد ذلك في activity_main.xml سننشئ 2EditTexts الأول للبريد الإلكتروني والثاني لكلمة المرور بالإضافة الى زر LOGIN لتسجيل الدخول وأخيراً textView للإنتقال الى أكتفتي تسجيل حساب جديد Signup
نبدأ أولاً بعملية تسجيل حساب جديد ونقوم بإنشاء أكتفتي جديد لهذا الأمر وسيكون نفس الأكتفتي السابق ولكن بدل زر LOGIN سيكون SIGNUP ونغير عنوان textView للانتقال الى أكتفتي تسجيل الدخول.
ثم داخل أكتفتي SignupActivity ننشئ ميثود SignupUser ونستدعيها عند الضغط على زر SignupBtn ونعطيه قيمة الEditTexts.
داخل ميثود SignupUser استخدمنا ميثود من Firebase Auth اسمها createUserWithEmailAndPassword وبالطبع تأخذ 2 بارامتر email و password
ثم أضفنا ميثود addOnCompleteListener التي تعيد لنا نتيجة العملية وقمنا بالتحقق اذا تمت العملية بنجاح أم لا بنفس فكرة المثال السابق
نجرب تشغيل التطبيق ونضع أي إيميل وأي باسوورد ونضغط على Signup وإذا نجحت العملية سنرى رسالة Toast User Created
نذهب الى Firebase Console وسنجد أنه تم إنشاء حساب جديد
ننتقل الآن الى عملية تسجيل الدخول بحساب حالي(الحساب الذي أنشأناه) في أكتفتي MainActivity وننشئ ميثود SignInUser يأخذ نفس البارامترات ونفس onCompleteListener ولكن هذه المرة signInWithEmailAndPassword
إذا نجحت عملية تسجيل الدخول سنرى رسالة Toast
معرفة هل تم تسجيل الدخول باستخدام Firebase Auth State Listener
في بعض الأحيان عند تشغيل التطبيق نريد معرفة هل تم تسجيل الدخول أم لا (فمثلا إذا تم تسجيل الدخول قم بتشغيل أكتفتي جديد وإلا أظهر أكتفتي تسجيل الدخول..)
في MainActivity نعرف اوبجكت من FirebaseAuth.AuthStateListener
وننشئ ميثود جديد اسمه initAuthStateListener ونستدعيه داخل onCreate ,هذا الميثود يقوم بتعريف mAuthListener .
الmAuthListener تعيد لنا firebaseAuth, الذي يحتوي على ميثود getCurrentUser والتي بدورها تقوم بجلب المستخدم الحالي ,ثم نتحقق اذا كان user لا يساوي null (بالتالي المستخدم قد قام بتسجيل الدخول )عندها نقوم بعمل log ل uid الuser وإلا else المستخدم لم يقم بتسجيل الدخول او قد قام بتسجيل الخروج
أخيراً نقوم بعمل override ل onStart و onStop , ونضيف mAuthListener ل mAuth في onStart وفي onStop نقوم بإزالة هذا Listener
نجرب تشغيل التطبيق وإذا كان المستخدم قد قام بتسجيل الدخول عندها ستظهر الرسالة في logcat مع uid.
تُوفر Firebase أيضاً ميزة تفعيل البريد الإلكتروني(إرسال رسالة تأكيد من Firebase الى البريد الذي تم إدخاله) وإستعادة كلمة المرور في حال نسيانها وتغيير البريد الإلكتروني وإمكانية تخصيص شكل الرسالة ,يمكنك تفقدها في خانة Email Templates في Firebase Console.
هذه كانت مقدمة بسيطة عن Firebase Authentication وسنحاول التطرق لها أكثر في الدروس القادمة
ملاحظة:المشروع على Github للمعاينة فقط ولايمكنك تجربته على Android Studio لعدم وجود google-services.json الخاص بك
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !