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
<uses-permission android:name="android.permission.INTERNET"/>
ثم نضيف Meta-Data قبل إغلاق وسم application
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
ثم نضيف أكتفتي المسؤولة عن تسجيل الدخول من Facebook (موجودة ضمن Facebook SDK)
<activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" />
ونضيف أكتفتي أخرى في حال كان المستخدم لم يقم بتثبيت تطبيق Facebook في جهازه
وهي موجودة ضمن Facebook SDK أيضاً
<activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
ونضيف 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
الآن يجب علينا الحصول على App Secret و App Id قم بالتوجه الى إعدادات تطبيق Facebook الى Dashboard وستجد App Secret و App Id قم بنسخهم
ثم توجه الى Firebase Console وقم بتفعيل تسجيل الدخول عبر Facebook والصق App Id و App Secret
ثم نقوم بنسخ OAuth Uri
ثم Save
بعد ذلك نتوجه الى إعدادات Facebook Login ونضع OAuth Uri
نجرب تشغيل التطبيق وعند الضغط على زر Login ,اذا كان المستخدم لم يثبت تطبيق Facebook فسيظهر له بهذا الشكل
أما اذا قام بتثبيته فسيظهر بهذا الشكل
عموماً نجرب التشغيل
وعند نجاح العملية ستجد أن المستخدم قد تم تسجيله في Firebase وسيتغير نص الزر الى Log out
اذا كنت قد جربت عملية تسجيل الدخول على نفس حساب المطور فستنجح عملية التسجيل,أما اذا قمت بتجريبه على حساب آخر غالباً ستفشل عملية التسجيل وذلك لأنه التطبيق الذي أنشأته ليس Public ولحل هذه المشكلة قم بالتوجه الى إعدادات التطبيق في Facebook في قسم App Review ونقوم بجعله Public
ملاحظة:المشروع على Github للمعاينة فقط ولايمكنك تجربته على Android Studio لعدم وجود google-services.json الخاص بك
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !