Firebase Authentication – طريقة تسجيل حساب جديد – تسجيل الدخول – تسجيل الحروج – والتحقق من البريد الإلكتروني
Android Kotlin – تعلم اضافة firebase ‘الفايربيس’ لتطبيق وتسجيل الدخول عن طريقها
في اول درس سوف نشرح طريقة تسجيل الجديد وستجيل الدخول عن طريق الايميل وكلمة السر البرمجة سوف تكون عن طريق لغة كوتلين
-
انشاء المشروع وربطه مع firebase
-
تمكين Authentication من لوحة تحكم الفايربيس
-
انشاء activity الخاص في الدخول وتصميم الواجهة xml
-
اضافة كود FirebaseAuth الى LoginActivity وكتابة الكود الخاص في تسجيل الجديد وتسجيل الدخول
-
نقل بيانات المستخدم الى MainActivity واضافة تسجيل الخروج والتحقق من البريد الالكتروني
قم بانشاء المشروع واتبع الخطوات التالية لانشاء مشروع الفايربيس وربطه مع المشروع
ربط المشروع مع الفايربيس عن طريق android studio
تمكين Authentication
انتقل إلى لوحة تحكم المشروع
Authentication -> SIGN-IN METHOD -> Enable Email/Password
تصميم واجهة الدخول واضافة العناصر edittext and button الى login_activity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sign Up" android:id="@+id/btnSignUp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sign In" android:id="@+id/btnSignIn"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sign Out" android:id="@+id/btnSignOut"/> </LinearLayout> |
الكود من MainAvtivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
class MainActivity : AppCompatActivity() { var auth :FirebaseAuth? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) auth = FirebaseAuth.getInstance() val btnSignUp = findViewById<View>(R.id.btnSignUp) as Button val btnSignIn = findViewById<View>(R.id.btnSignIn) as Button val btnSignOut = findViewById<View>(R.id.btnSignOut) as Button btnSignUp.setOnClickListener { view -> signUp(view, "email", "pass") } btnSignIn.setOnClickListener { view -> signIn(view, "email", "pass") } btnSignOut.setOnClickListener { view -> signOut() } } private fun signUp(view :View, email :String, pass :String) { auth!!.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(this, OnCompleteListener { task -> if (task.isSuccessful) { showMessage(view, "Successful") sendEmailVerfivation(view) } else { showMessage(view, "Error ${task.exception?.message}") } }) } private fun signIn(view :View, email :String, pass :String) { auth!!.signInWithEmailAndPassword(email, pass).addOnCompleteListener(this, OnCompleteListener { task -> if (task.isSuccessful) { showMessage(view, "Successful") } else { showMessage(view, "Error ${task.exception?.message}") } }) } private fun sendEmailVerfivation(view :View) { var user = auth!!.currentUser user!!.sendEmailVerification().addOnCompleteListener(this) { task -> if (task.isSuccessful) { showMessage(view, "Email Send") } } } private fun signOut() { auth!!.signOut() } private fun showMessage(view : View, message:String) { Snackbar.make(view, message , Snackbar.LENGTH_INDEFINITE).setAction("FIRE", null).show() } } |
طبعاً ممكن فحص اذا التأكد من الايميل ام لم يتم الامر بعد عن طريق
1 |
auth!!.currentUser!!.isEmailVerified |
اذا تم التأكيد سوف تكون النتيجة true
اما اذا لم يتم تأكيد بعد ترجع النتيجة false
ممكن استخدام الكود باكثر من طريقة ولكن جعلتها بطريقة الاسهل حيث ممكن جعل المستخدم لا يتمكن من الدخول الى باقي اقسام التطبيق اذا لم يتم تاكيد الايميل
هذه النقطة مفيدة اذا كنى نريد منع المستخدم تسجيل الدخول عن طريق ايميل غير حقيقي
اذا كانت هنالك نقطة غير واضحة في الكود او شيئ تم استخدامه غير واضح سبب استخدامه الرجاء تركه بتعليق وسوف يتم توضيح الامر
في الدرس القادم سوف يكون عن تسجيل الدخول عن طريق google وجلب معلومات المستخدم بعد تسجيله الدخول كـ اسمه وعمرر وجنسه وحتى رابط صورة الموضوع للحساب الذي سجل به
تم رفع الكود كاملاً على GitHub
وسوف يتم تحديث عند كل درس جديد يتم اضافته بحيث يكون المشروع كاملا للاستفادة من الكود المستخدم
Permalink
ممكن رابط المشروع جاهز لو تكرمت
هذا رابط المشروع
https://github.com/KotDroid/KotdroidTestFirebase