Firebase Authentication | تسجيل الدخول باستخدام حساب فيسبوك

 

بدايةً يجب عليك التوجه الى Facebook Developers والتسجيل كمطور  عبر حسابك الشخصي في فيسبوك وذلك بالضغط على Register 

بعد ذلك نختار Yes ثم Register

ثم Create App ID

بعد ذلك نضع اسم التطبيق والإيميل الخاص بك

سيتم إنشاء تطبيق Facebook خاص بك وسيعطيك APP ID الذي سنحتاجه لاحقاً

ثم اضغط على Get Started لنبدأ بتجهيز المشروع

ثم نختار Android

ستظهر لنا هذه الخطوات

نبدأ أولاً بإنشاء مشروع جديد على Android Studio وعلى Firebase ونضيف مكتبةFirebase Auth

 compile 'com.google.firebase:firebase-auth:10.2.1' 

ونقوم بربط Firebase ب مشروع Android

بعد ذلك نقوم بإضافة Facebook SDK ,ولذلك علينا إضافة mavenCentral قبل dependencies

 repositories {     mavenCentral() } 

ثم نضيف Facebook SDK في dependencies ثم نعمل Sync ل Gradle

 compile 'com.facebook.android:facebook-android-sdk:[4,5)' 

بعد ذلك ننتقل الى الخطوة الثالثة ونضيف اسم package الخاص بمشروع الأندرويد ونضيف اسم الأكتفتي الإفتراضي الذي سيعمل في التطبيق ,في حالتي هو MainActivity 

ونضيف قبله اسم package ثم واسم الأكتفتي

بعد ذلك ستظهر لك رسالة تحذير بأنه لا يوجد تطبيق بهذا الاسم موجود على متجر Google Play Store,لا عليك اختر Use this package name

بعد ذلك سنحتاج الى معرف يدعى Key Hash ولتوليد هذا المعرف يمكنك إما نسخ الأمر الموجود في Facebook Quick Start أو يمكنك إستخدام هذه الأداة التي صنعتها لتسهيل الموضوع ومتوفرة لأنظمة 32 و 64 بت, فقط قم بتشغيل الملف التنفيذي وإختر نوع الKey Hash (هل تريد صنعه ل Debug أم ل Release)

عند تشغيل ملف Debug سيطلب منا رمز Keystore قم بإدخال أي رقم أو قم بكتابة android فهي الكلمة الإفتراضية

أما عند تشغيل ملف Release فسيطلب منك رمز Alias الذي وضعته عند إنشاء ملف الشهادة الذي ينتهي بصيغة jks (عند عمل Generate Signed APK في الأندرويد ستوديو)

ثم سيطلب منك مسار ملف الشهادة (C:User\Desktop\Cert.jks) على سبيل المثال وسيظهر لك ال Key Hash قم بنسخه

والصقه في Facebook

ثم قم بتفعيل Single Sign On

 

بعد ذلك سنضيف بعد الأمور في Android Studio

نقوم بنسخ App ID ونلصقه في ملف strings.xml

بعد ذلك نضيف صلاحيات الإنترنت في Android Manifest

 

 

ثم نضيف Meta-Data قبل إغلاق وسم application

 

 

ثم نضيف أكتفتي المسؤولة عن تسجيل الدخول من Facebook

 



ونضيف أكتفتي أخرى في حال كان المستخدم لم يقم بتثبيت تطبيق Facebook في جهازه

 

ونضيف Protocol Scheme في strings.xml (نقوم بنسخه من Facebook Quick Start Guide)

الآن نتجه لى activity_main.xml ونضيف زر تسجيل الدخول  

ثم نتجه الى MainActivity ونعرف بعض المتغيرات

  • FirebaseAuth 
  • LoginButton زر تسجيل الدخول
  • CallbackManager المسؤول عن إعادة نتيجة تسجيل الدخول

ثم قمنا بإعطائهم قيم في onCreate

ثم جعلنا زر LoginButton يقرأ صلاحيات Email

بعد ذلك قم بتسجيل Callback عبر ميثود registerCallback وأعطيناه callbackManager كبارامتر

وهي تعيد لنا 3 ميثود

  • onSuccess عند نجاح عملية تسجيل الدخول
  • onCancel عند الغاء عملية التسجيل من قبل المستخدم
  • onError عند حدوث خطأ ما

وقمنا بعمل Log في كل حالة

 

ثم قمنا بعمل Override ل onActivityResult وقمنا بتسجيل callbackManager في onActivityResult (بدونه لن تعود أي نتيجة )

أما الآن سنقوم بإنشاء ميثود handleFacebookAccessToken التي تقوم بأخذ Access Token من ميثود onSuccess عبر loginResult

ونقوم باستدعاء ميثود mAuth.signInWithCredential لحفظ المستخدم في Firebase وقمنا بعمل Log للنتيجة

ثم استدعينا الميثود في onSuccess وقمنا بأخذ AccessToken

قبل تشغيل التطبيق يجب علينا التوجه الى Firebase Console وتفعيل خيار Facebook 

ونقوم بلصق App ID وApp Secret

للحصول على App Secret قم بالتوجه الى إعدادات تطبيق Facebook الى Dashboard وستجد App Secret قم بنسخه والصقه في Firebase

ثم نقوم بنسخ OAuth Uri  

 

بعد ذلك نتوجه الى إعدادات Facebook Login ونضع OAuth Uri  

نجرب تشغيل التطبيق وعند الضغط على زر Login ,اذا كان المستخدم لم يثبت تطبيق Facebook فسيظهر له بهذا الشكل

أما اذا قام بتثبيته فسيظهر بهذا الشكل

عموماً نجرب التشغيل

وعند نجاح العملية ستجد أن المستخدم قد تم تسجيله في Firebase وسيتغير نص الزر الى Log out

اذا كنت قد جربت عملية تسجيل الدخول على نفس حساب المطور فستنجح عملية التسجيل,أما اذا قمت بتجريبه على حساب آخر غالباً ستفشل عملية التسجيل وذلك لأنه التطبيق الذي أنشأته ليس Public 

ولحل هذه المشكلة قم بالتوجه الى إعدادات التطبيق في Facebook في قسم App Review ونقوم بجعله Public

 

رابط المشروع على Github

ملاحظة:المشروع على Github للمعاينة فقط ولايمكنك تجربته على Android Studio لعدم وجود google-services.json الخاص بك

اشترك فى النشرة البريدية لتحصل على اهم الاخبار بمجرد نشرها

تابعنا على مواقع التواصل الاجتماعى

التالى رسمياً جوجل توقف خدمه اختصار الروابط ابتداءً من 13 ابريل الجاري